rowsI我正在尝试对记录数组中的每个字段执行mongodb更新。
示例架构如下:
{
"_id" : ObjectId("508710f16dc636ec07000022"),
"summary" : "",
"uid" : "ABCDEF",
"username" : "bigcheese",
"name" : "Name of this document",
"status_id" : 0,
"rows" : [
{
"score" : 12,
"status_id" : 0,
"uid" : 1
},
{
"score" : 51,
"status_id" : 0,
"uid" : 2
}
]
}
到目前为止,我已经能够执行这样的单一更新:
db.mycollection.update({"uid":"ABCDEF","rows.uid":1}, {$set:{"rows.$.status_id":1}},false,false)
但是,我正在努力解决如何执行更新,将所有数组记录更新为status_id
为1(例如)。
以下是我认为应该如何运作:
db.mycollection.update({"uid":"ABCDEF"}, {$set:{"rows.$.status_id":1}},false,true)
然而我收到错误:
无法使用字符串字段名[$]
附加到数组
我已经尝试了一段时间但没有运气。有什么指针吗?
答案 0 :(得分:6)
您无法对要查找的数组元素进行“通配符”更新。我认为你能做的最好的事情是同时设置每个元素的status_id
值,如下所示:
db.mycollection.update(
{"uid":"ABCDEF"},
{$set:{
"rows.0.status_id":1,
"rows.1.status_id":1
}}, false, true);