假设我有这个文件我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]
。怎么做到这一点?
答案 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 ] }