我在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},
]
}
]
}
答案 0 :(得分:6)
不幸的是,你偶然发现了一个非常烦人的MongoDB限制。
您可以使用the $ placeholder更新单个数组条目。但遗憾的是,您只能在字段名称中使用其中一个。这意味着无法使用单个查询更新数组内的数组。
可能的解决方法是使用find
请求整个items.$.fields
数组的副本,在应用程序层上编辑它,然后执行更新以替换整个数组。
an open ticket on the official bugtracker about this issue有“主要”优先权。但这张票从2010年开始存在,所以我不会屏住呼吸。