如何在mongodb中将所有数组元素从a位置递增到b?

时间:2015-10-04 22:09:26

标签: mongodb mongodb-query

假设我有这个文件我mongodb。

{ "_id" : 1, "seats" : [ 80, 85, 90, 95 ] }
{ "_id" : 2, "seats" : [ 88, 90, 92, 97 ] },
{ "_id" : 3, "seats" : [ 85, 100, 90, 85 ] },

我想将席位数组从"_id": 1的第1位增加到第3位,并将其设为"seats": [80,86, 91, 96]。怎么做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以尝试同时使用 $inc 更新运算符和 dot notation 来访问座位数组的元素基于索引的位置并将它们加1。以下 update() 操作使用 $inc 运算符将席位数组从{1}}字段的位置1增加到位置3 1:

"_id": 1

答案 1 :(得分:0)

要从给定索引更新seats数组中的每个元素,您需要遍历该索引的每个元素,并使用$inc运算符通过"bulk"操作递增值。 / p>

var bulkOp = db.collection.initializeOrderedBulkOp();
var fromIndex = 1
var toIndex = 3

db.collection.find({ '_id': 1 }).forEach(function(doc) { 
    var seats = doc.seats; 
    for(var index = fromIndex; index <= toIndex; index++) {  
        bulkOp.find({ '_id': doc._id, 'seats': seats[index] })
              .updateOne({ '$inc': { 'seats.$':1 } }); 
bulkOp.execute(); 

然后db.collection.find({ '_id': 1 })产生

{ "_id" : 1, "seats" : [ 80, 86, 91, 96 ] }