首页 > 解决方案 > Mongodb - 我需要从数组中删除多个对象

问题描述

我有这个数据集:

{
        "_id" : ObjectId("6036953aec9d2a3612452bae"), "name" : "Chris",
        "friends" : [
                      { "name" : "xyz", "age" : 23 }, // delete
                      { "name" : "xyz", "age" : 34 }, // delete
                      { "name" : "abc", "age" : 18 },
                      { "name" : "pqr", "age" : 27 } // delete
                    ],
}

我想为用户删除提到的对象:

这是我正在做的查询:

db.users.updateOne(
  { name: "Chris" }, 
  { $pull: { 'friends.$[el]' } }, 
  { arrayFilters: [{ 'el.name': { $in: [ 'xyz', 'abc' ] } }] }  
)

错误:

uncaught exception: SyntaxError: missing : after property id :

提前致谢!

标签: node.jsmongodbexpressmongoosenosql

解决方案


您可以将文档查看到从文档数组中删除项目部分,其中是您想要的示例。

此查询有效:

db.users.updateOne(
{"name": "Chris"},
{
  "$pull": {
    "friends": {
      "name": {
        "$in": ["xyz","pqr"]
      }
    }
  }
})

这里的例子

此查询更新找到的第一个文档 where nameisChris并删除 ( $pull) 对象 where friends.nameis 到$in数组中。


推荐阅读