在mongodb中使用数组内的$ gt运算符更新多个对象

时间:2018-12-29 10:04:45

标签: javascript node.js mongodb

我正在尝试更新文档中要根据大于条件执行更新操作的文档中的数组。

这是我的文件:

{  
  _id:some_id,
  name:"test",
  data:[
         { __id:1,
           __data:[{a:"something"}]
          },
           { __id:2,
           __data:[{a:"something"}]
          },
           { __id:3,
           __data:[{a:"something"}]
          }....
        ]
}

如果它的__id大于2,我想从数据数组的每个元素的__id中减去1

当前我正在执行此操作,但是它不起作用

db.collection('collection_name').update({name:"test","data.__id":{$gt:2}},{$inc:{"data.__id":-1}},{multi:true})

1 个答案:

答案 0 :(得分:1)

您必须使用$ positional运算符来更新数组中的值

db.getCollection('test').update(
 { "name": "test" , "data.__id": { "$gt": 2 }},
 { "$inc": { "data.$.__id": -1 }},
 { "multi": true }
)