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)
不幸的是,你偶然发现了一个非常烦人的MongoDB限制.
您可以使用$占位符更新单个数组条目.但遗憾的是,您只能在字段名称中使用其中一个.这意味着无法使用单个查询更新数组内的数组.
一种可能的解决方法是使用a find来请求整个items.$.fields数组的副本,在应用程序层上编辑它,然后执行更新以替换整个数组.
关于这个问题的官方bugtracker有一张公开的票,它具有"主要"的优先权.但这张票从2010年开始存在,所以我不会屏住呼吸.