Mongodb如何更新多个数组文件

时间:2019-05-08 13:13:56

标签: php arrays mongodb updates

有人可以告诉我如何更新数组中的多个元素吗? 我有类似的对象:

{
    _id: 1,
    name: 'x',
    someArray: [
        {'a': 1},
        {'a': 1, 'b': 2},
        {'a': 2}
    ]
}

我想更新 someArray其中'a'== 1 的所有元素。 我试图通过命令

db.collection.update(
    {_id: 1, 'somaArray.a': 1}, 
    {$set: {'someArray.$.c': 3}}, 
    {multi: true}
)

但是此命令仅更新了someArray中的一个元素。第二个未更新。结果似乎是:

{
    _id: 1,
    name: 'x',
    someArray: [
        {'a': 1, 'c': 3},
        {'a': 1, 'b': 2},
        {'a': 2}
    ]
}

如何实现所有符合条件的元素的更新? 谢谢。

2 个答案:

答案 0 :(得分:1)

请尝试以下操作:(Read)

{
    "_id" : 1,
    "name" : "x",
    "someArray" : [
        {
            "a" : 1,
            "c" : 3
        },
        {
            "a" : 1,
            "b" : 2,
            "c" : 3
        },
        {
            "a" : 2
        }
    ]
}

结果响应如下:

{{1}}

答案 1 :(得分:0)

我认为这个问题与您的问题类似

访问(How to Update Multiple Array Elements in mongodb)!并检查出来