MongoDB - 更新多维数字索引数组中的对象

MongoDB - update an object inside a multi dimensional numerical indexed array

我正在学习 MongoDB(第 5 版)[使用 Django (pymongo)] 并面临更新对象的多维数值数组的问题。

我想更新嵌套在多维数组中的对象值。

样本采集数据:

[
  {
    "_id": {
      "$oid": "6269a7a2d9a928481c1ee94c"
    },
    "data": [
      [
        [
          {
            "id": "",
            "word": "arep 1"
          },
          {
            "id": "",
            "word": "arep 2"
          },
          {
            "id": "",
            "word": "arep 3"
          }
        ],
        [
          {
            "id": "",
            "word": "arep 4"
          },
          {
            "id": "",
            "word": "arep 5"
          },
          {
            "id": "",
            "word": "arep 6"
          }
        ],
        [],
        []
      ],
      
    ]
  }
]

我想将“id”字段值更新为“some new id”,其中相关的“” word”是“arep 2”。到目前为止,我已经创建了一个更新查询,如:

db.collection.update({
  "_id": {
    "$oid": "6269a7a2d9a928481c1ee94c"
  },
  "data.$.$.$": {
    "word": "arep 2"
  }
},
{
  "$set": {
    "data.$[].$[].$[]": {
      "id": "some new id"
    }
  }
},
{
  "upsert": true
})

但未设置该值。我做错了什么?

mongo playground

感谢您阅读到这里。预先感谢您就解决方案集思广益。

查询

  • 数组过滤器以匹配 word= "arep 2"
  • 对于所有成员(2个嵌套级别)($[] means for all members),将单词(满足arrayFilter)($[w].word)设置为"hello"

Playmongo

update(
{"_id": {"$eq": 1}},
{"$set": {"data.$[].$[].$[w].word": "hello"}},
{"arrayFilters": [{"w.word": {"$eq": "arep 2"}}]})