我的架构看起来像
{
qty:{
property1:{
//something
}
property2:[{
size:40,
color:"black",
enabled:"true"
}]
}
}
属性2是数组我要做的是更新那些在单个查询中启用为true的数组对象
我尝试编写以下查询
db.col.update({
"qty.property2.enabled" = "true"
}, {
"qty.property2.color" = "green"
}, callback)
但它不起作用
错误:
[main]错误:不能有。在字段名称[qty.pro.size]
答案 0 :(得分:3)
db.col.update({"qty.property2.enabled":"true"},{$set: {'qty.property2.$.color': 'green'}}, {multi: true})
这是更新数组内部元素的方法。
答案 1 :(得分:1)
假设您的文档看起来像这样。
{
"_id" : ObjectId("4f9808648859c65d"),
"array" : [
{"text" : "foo", "value" : 11},
{"text" : "foo", "value" : 22},
{"text" : "foobar", "value" : 33}
]
}
然后你的查询将是
db.foo.update({"array.value" : 22}, {"$set" : {"array.$.text" : "blah"}})
其中第一个大括号表示查询条件,第二个大括号设置新值。