Mongo 数据库文档的深度更新

Deep update of Mongo DB document

我在 Mongo DB 3.0 文档中有以下文档结构:

{
    id: "ID",
    name: "NAME",
    items:[
        {
            id:"100",
            name:"Item Name",
            fields:[
                {a:"field 1", b:44},
                {a:"field 2", b:56},
            ]
        }
    ]
}

我需要将 "field 2" 的值更新为 72,这样结果将如下所示:

{
    id: "ID",
    name: "NAME",
    items:[
        {
            id:"100",
            name:"Item Name",
            fields:[
                {a:"field 1", b:44},
                {a:"field 2", b:72},
            ]
        }
    ]
}

不幸的是,您偶然发现了一个非常恼人的限制 MongoDB。

您可以使用 the $ placeholder 更新单个数组条目。但不幸的是,您只能在字段名称中使用其中之一。这意味着无法使用单个查询更新数组中的数组。

一种可能的解决方法是使用 find 来请求整个 items.$.fields 数组的副本,在应用程序层对其进行编辑,然后进行替换整个数组的更新。

an open ticket on the official bugtracker about this issue 具有 "major" 优先级。但是这张票是2010年就有的,所以我不会屏住呼吸。