【问题标题】:Mongodb how to update more than one array documentsMongodb如何更新多个数组文件
【发布时间】:2019-05-08 13:13:55
【问题描述】:

谁能告诉我如何更新数组中的多个元素? 我有这样的对象:

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

我想更新 someArray where '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}
    ]
}

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

【问题讨论】:

  • 你在用nodejs吗?
  • 不,它的 PHP 应用程序。
  • 我觉得这个问题和你的问题差不多 访问 stackoverflow.com/questions/4669178/…>?

标签: php arrays mongodb updates


【解决方案1】:

尝试如下:(Read)

db.collection.update({_id:1},
    {
        $set: {
            'someArray.$[elem].c': 3 
        }        
    },
    { arrayFilters: [{ "elem.a": 1 }], multi: true, "upsert": true }
)

结果响应如下:

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

【讨论】:

  • 是的,但我使用的是 Mongodb 3.4。 [elem] 在此版本中不起作用。
【解决方案2】:

我觉得这个问题和你的差不多

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

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多