3

我在 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},
            ]
        }
    ]
}
4

1 回答 1

6

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

您可以使用$ 占位符更新单个数组条目。但不幸的是,您只能在字段名称中包含其中之一。这意味着数组中的数组不能通过单个查询进行更新。

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

在官方 bugtracker 上有一张关于这个问题的公开票,它具有“主要”优先级。但这张票自 2010 年以来就存在,所以我不会屏住呼吸。

于 2015-09-07T18:54:36.040 回答