node.js - 从 arrays MongoDb 数组中拉取元素

我正在努力寻找查询的格式,以从 Mongo 的 arrays 数组中删除一个元素(带有 _id)。

在查看文档时,我找不到与我所拥有的类似的任何内容 https://www.mongodb.com/docs/manual/reference/operator/update/pull/#up._S_pull

我知道:MySchema中文档的_id和innerArray中数组元素的_id。

我不知道 outerArray _id

谁能帮忙指出我哪里出错了谢谢!

这是一个数据示例(想象一下 ObjectId 中的 _id)

{
  outerArray:[
           {
             _id: 1
             innerArray: [{_id: 23, name: '123'}, {_id: 13, name: 'asdac'} ] 
           },
           {
             _id: 2,
             innerArray: [{_id: 16,name:'asf' }, {_id: 18,name:'asf' } ] 
           },
           {
            _id: 3,
            innerArray: [{_id: 136,name:'asf' }, {_id: 128,name:'asf' } ] 
           }
          ]
}

innerIds 是 mongoose.Types.ObjectId 的数组

return MySchema.updateOne(
    {
      _id: documentId,
    },
    { $pull: { outerArray: { innerArray: { _id: { $in: innerIds } } } } },
  )
    .session(session)
    .exec()

回答1

db.collection.update({},
{
  $pull: {
    "outerArray.$[].innerArray": {//$[] does the trick
      _id: {
        $in: [
          16
        ]
      }
    }
  }
})

https://mongoplayground.net/p/e7FcuXHvd8l

相似文章

java - 连接MongoDB

早上好。我在连接到MongoDB数据库时遇到问题。我在docker-compose.yml文件中为自己配置了一个数据库和mongoexpress。使用CommandLineRunner,我想将示例数据...

最新文章