我有这段代码
{
"_id" : ObjectId("573308a2519d9ff8820e7be8"),
"id" : "Example",
"Test" : [
"InsertB1",
"InsertB2"
],
"num" : 2
}
我想使用函数findAndUpdate
,因为我想
"InsertB1"
更改为"UpdateB1"
"num"
从2增加到3。我已写过这篇文章,但不起作用......
db.Collection.findAndModify({
query: {
id:"Example",
num:{ $lt: 3 }
},
update: {
id:"Example",
Test: "InsertB1",
$set: { "Test.$": "Update1" },
$inc: { num: 1 }
},
upsert:true,
new:true
})
如何修改我的代码?
答案 0 :(得分:1)
您忘记在查询中包含要更新的数组元素。
$
引用查询中寻址的第一个匹配数组元素,如果要更新“InsertB1”,则必须添加该元素。
尝试使用此
var oldDoc = db.Collection.findAndModify({
query: {
id:"Example",
num: {$lt:3},
Test: "InsertB1"
},
update: {
$set : {"Test.$": "Update1"},
$inc: {num : 1 }}
},
upsert: true)
如果不需要返回旧(或新)文档,您可以坚持使用更新命令
db.Collection.update({
id:"Example",
Test: "InsertB1",
num: {$lt:3}
},{
$set : { "Test.$": "Update1"},
$inc: {num : 1}
})