Mongo DB文档的深度更新

时间:2015-09-07 18:43:17

标签: 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},
            ]
        }
    ]
}

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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

an open ticket on the official bugtracker about this issue有“主要”优先权。但这张票从2010年开始存在,所以我不会屏住呼吸。