【发布时间】:2017-01-02 17:05:02
【问题描述】:
这是我的第一个 Web 应用程序,我需要删除一个嵌套数组项。您将如何使用此架构删除 Mongoose 中的对象:
User: {
event: [{_id:12345, title: "this"},{_id:12346, title:"that"}]
}
如何在 mongoose/Mongo 中删除 id:12346?
【问题讨论】:
标签: javascript node.js mongoose
这是我的第一个 Web 应用程序,我需要删除一个嵌套数组项。您将如何使用此架构删除 Mongoose 中的对象:
User: {
event: [{_id:12345, title: "this"},{_id:12346, title:"that"}]
}
如何在 mongoose/Mongo 中删除 id:12346?
【问题讨论】:
标签: javascript node.js mongoose
使用$pull 从以下项目数组中删除项目:
db.User.update(
{ },
{ $pull: { event: { _id: 12346 } } }
)
$pull 运算符从现有数组中删除 a 的所有实例 一个或多个符合指定条件的值。
第一个参数中的空对象是query 来查找文件。上述方法将集合中所有文档中event数组中带有_id: 12345的项删除。
如果数组中有多个符合条件的项,请将multi 选项设置为 true,如下所示:
db.User.update(
{ },
{ $pull: { event: { _id: 12346 } } },
{ multi: true}
)
【讨论】:
event { _id: 123456) 并将其删除,对吗?如果需要,我可以通过在第一个条件中添加一个 ID 来删除一个实例,对吗?
User中的所有文档中的数组event中删除所有items和_id:123456。如果你想删除所有匹配的文档,你可以使用remove方法
$pull 将删除现有数组中的特定值,而不是与条件匹配的整个文档。如果要删除符合条件的整个文档,请使用db.collection.remove
Findone 将搜索 id,如果没有找到则 err 否则 remove 将起作用。
User.findOne({id:12346}, function (err, User) {
if (err) {
return;
}
User.remove(function (err) {
// if no error, your model is removed
});
});
【讨论】:
User.findOneAndUpdate({ _id: "12346" }, { $pull: { event: { _id: "12346" } } }, { new: true });
【讨论】: