【发布时间】:2015-11-25 21:06:43
【问题描述】:
我正在尝试在嵌套数组中查找记录,对其进行修改,然后进行投影。
假设我有以下收藏:
{
"_id" : ObjectId("56558dfc45a06f51decb4ab7"),
"arr" : [
{
"cond" : 1.0000000000000000,
"upd" : 2.0000000000000000
},
{
"cond" : 2.0000000000000000,
"upd" : 3.0000000000000000
},
{
"cond" : 4.0000000000000000,
"upd" : 5.0000000000000000
},
{
"cond" : 6.0000000000000000,
"upd" : 7.0000000000000000
},
{
"cond" : 8.0000000000000000,
"upd" : 9.0000000000000000
}
]
}
我想找到“cond=4”所在的记录,更新为“upd=55”并返回记录。
我尝试了以下查询:
db.tests.findAndModify({
query:{
"arr": {"$elemMatch": {"cond":4}}
},
update: {
"$set": {"arr.$": {"cond": 4, "upd": 55, "new": true}}
},
fields: {"arr.$":1}
})
它很好地执行了更新,但我收到以下结果:
{
"_id" : ObjectId("56558dfc45a06f51decb4ab7"),
"arr" : [
{},
{},
{},
{},
{}
]
}
*我使用的是 MongoDB 版本:3.0.7
【问题讨论】:
-
随着更新“upd”:55,您正在添加新字段“new”:true。对吗?
标签: mongodb