MongoDB:使用 FindAndUpdate() 更新数组
MongoDB: Update an array using FindAndUpdate()
我有这个代码
{
"_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
})
如何修改我的代码?
您忘记在查询中包含要更新的数组元素。
$
是指查询中找到的第一个匹配数组元素,如果要更新 "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}
})
我有这个代码
{
"_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
})
如何修改我的代码?
您忘记在查询中包含要更新的数组元素。
$
是指查询中找到的第一个匹配数组元素,如果要更新 "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}
})