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年就有的,所以我不会屏住呼吸。
我在 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年就有的,所以我不会屏住呼吸。