Mongodb - 我需要从数组中删除多个对象

Posted

技术标签:

【中文标题】Mongodb - 我需要从数组中删除多个对象【英文标题】:Mongodb - I need to delete multiple objects from array 【发布时间】:2021-05-29 05:57:00 【问题描述】:

我有这个数据集:


        "_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 :

提前致谢!

【问题讨论】:

【参考方案1】:

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

此查询有效:

db.users.updateOne(
"name": "Chris",

  "$pull": 
    "friends": 
      "name": 
        "$in": ["xyz","pqr"]
      
    
  
)

例如here

此查询更新找到nameChris 的第一个文档,并将friends.name 所在的($pull) 对象删除到$in 数组中。

【讨论】:

以上是关于Mongodb - 我需要从数组中删除多个对象的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB:从多个文档中的数组中删除文档

Mongodb,使用javascript从一组对象中删除一个对象

从MongoDB中的数组中删除多个文档

从 mongodb 中的对象数组中删除 id

MongoDB,从数组中的对象中删除嵌套项

查询一个对象数组并返回一个对象 - mongodb