Mongo DB文档的深度更新

vla*_*tax 3 mongodb mongodb-update

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

我需要将"字段2"更新为值72,以便结果如下:

{
    id: "ID",
    name: "NAME",
    items:[
        {
            id:"100",
            name:"Item Name",
            fields:[
                {a:"field 1", b:44},
                {a:"field 2", b:72},
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Phi*_*ipp 6

不幸的是,你偶然发现了一个非常烦人的MongoDB限制.

您可以使用$占位符更新单个数组条目.但遗憾的是,您只能在字段名称中使用其中一个.这意味着无法使用单个查询更新数组内的数组.

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

关于这个问题的官方bugtracker一张公开的票,它具有"主要"的优先权.但这张票从2010年开始存在,所以我不会屏住呼吸.