这是我的第一个Web应用程序,我需要删除一个嵌套的数组项。如何使用此模式删除Mongoose中的对象:
User: {
event: [{_id:12345, title: "this"},{_id:12346, title:"that"}]
}
如何在mongoose / Mongo中删除id:12346
?
答案 0 :(得分:3)
使用$pull从以下项目数组中删除项目:
db.User.update(
{ },
{ $pull: { event: { _id: 12346 } } }
)
$ pull运算符从现有数组中删除a的所有实例 符合指定条件的值或值。
第一个参数中的空对象是query
来查找文档。上述方法会删除集合中所有文档中_id: 12345
数组中event
的项目。
如果数组中有多个与条件匹配的项,请将multi
选项设置为true,如下所示:
db.User.update(
{ },
{ $pull: { event: { _id: 12346 } } },
{ multi: true}
)
答案 1 :(得分:1)
Findone将搜索id,如果没有找到则错误,否则删除将起作用。
User.findOne({id:12346}, function (err, User) {
if (err) {
return;
}
User.remove(function (err) {
// if no error, your model is removed
});
});
答案 2 :(得分:-1)
User.findOneAndUpdate({ _id: "12346" }, { $pull: { event: { _id: "12346" } } }, { new: true });