【问题标题】:MongoDB multiple array element updateMongoDB多数组元素更新
【发布时间】:2013-09-10 02:43:56
【问题描述】:

有没有办法更新嵌入在 mongo 文档的一个字段中的数组的多个元素?

例如:

db.exampleCollection.update({
    "_id" : "00000002522dde26c6d65aed",
    "array.priority" : {$gt : 4}
}, {$inc : {"array.$.priority" : 10} }, false, true);

这不会更新多个元素,只更新一个元素

【问题讨论】:

  • 您能否分享一下您拥有的文档结构和您想要实现的文档结构,以使您的问题更加清晰。
  • 您只是发布查询。您是否还可以发布您拥有的示例文档和您尝试实现的示例输出

标签: mongodb


【解决方案1】:

在update 中影响每个文档的多个数组元素的唯一方法是使用键中的数字索引来专门标识要通过数组位置更新的元素:

db.exampleCollection.update({
    "_id" : "00000002522dde26c6d65aed"
}, {
    $inc: {
        "array.0.priority": 10, 
        "array.1.priority": 10
    } 
}, false, true);

我知道您正在尝试定位 priority > 4 而不是按索引的元素,但这是残酷的现实。

【讨论】:

  • 有谁知道如果更新几个相邻字段是否有更简洁的方法?切片样式的符号会很好 - 即。 $inc : { "array.0:10.priority":10} 将位置 0 到 10 中的所有值递增
猜你喜欢
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
相关资源
最近更新 更多