MongoDB嵌套数组更新多个文档

时间:2019-10-10 09:29:12

标签: node.js mongodb mongoose

我的收藏名称为用户,其中显示了示例文档

{
    "userid": "6492hwwd26362",
    "open": false,
    "arr1": [{
        "name": "John",
        "arr2": [{
                "id": "1",
                "name": "name1"
            },
            {
                "id": "2",
                "name": "name2"
            }
        ]
    }, {
        "name": "Bill",
        "arr2": [{
                "id": "3",
                "name": "name3"
            },
            {
                "id": "4",
                "name": "name4"
            }
        ]
    }]
}

现在,我想更新多个数组元素,例如,我想使用单个查询将名称值更新为id为2的“ name22”,并想将名称值更新为id为3的“ name33”(使用单个查询),请考虑id是唯一的。

我在下面尝试过此查询

db.users.update(
    {
    "arr1": {
        $all: [{
            $elemMatch: {
               "arr2.id": "2"
            }
        }, {
            $elemMatch: {
                  "arr2.id": "3"
            }
        }]
    }
},
    {
        "$set": { 
           "arr1.$.arr2.$[inner1].name": "name22",
           "arr1.$.arr2.$[inner2].name": "name33"

        }
    },
    {
    "arrayFilters": [{
            "inner1.id": "2"
        },
        {
            "inner2.id": "3"
        }
    ]
}
)

但不能按预期工作。

0 个答案:

没有答案