在对数组字段执行更新时,无法使用字符串字段名[$]附加到数组

HGP*_*GPB 6 mongodb mongodb-update

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
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经能够执行这样的单个更新:

db.mycollection.update({"uid":"ABCDEF","rows.uid":1}, {$set:{"rows.$.status_id":1}},false,false)
Run Code Online (Sandbox Code Playgroud)

但是,我正在努力如何执行更新,将所有数组记录更新status_id为1(例如).

以下是我想象它应该如何工作:

db.mycollection.update({"uid":"ABCDEF"}, {$set:{"rows.$.status_id":1}},false,true)
Run Code Online (Sandbox Code Playgroud)

但是我得到错误:

无法使用字符串字段名称附加到数组[$]

我已经尝试了一段时间没有运气.有什么指针吗?

Joh*_*yHK 6

你无法对你正在寻找的数组元素进行那种"通配符"更新.我认为你能做的最好的事情是同时设置每个元素的status_id值,如下所示:

db.mycollection.update(
    {"uid":"ABCDEF"},
    {$set:{
        "rows.0.status_id":1,
        "rows.1.status_id":1
    }}, false, true);
Run Code Online (Sandbox Code Playgroud)