如何从Mongoose中的数组中删除嵌套对象

时间:2017-01-02 17:05:03

标签: javascript node.js mongoose

这是我的第一个Web应用程序,我需要删除一个嵌套的数组项。如何使用此模式删除Mongoose中的对象:

User: {
    event: [{_id:12345, title: "this"},{_id:12346, title:"that"}]
}

如何在mongoose / Mongo中删除id:12346

3 个答案:

答案 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 });