数据格式样例
{
"_id" : ObjectId("..."),
"id" : 2102855644,
"title" : "その未来へ",
"disks" : [
{
"title" : "disc 1",
"tracks" : [
{
"id" : 1796759555,
"title" : "その未来へ",
"sub" : "电视动画「泥鲸之子们在沙地上歌唱」OP / TVアニメ『クジラの子らは砂上に歌う』オープニングテーマ",
"duration" : 256,
"fix" : true
},
...
]
},
...
]
}
目标是更新 track
中的 fix
为 false
,同时不影响其他同层级的数据
在更新时临时命名 track
,然后借助 arrayFilters
在更新时进行过滤
实现
db.albums.update(
{ 'disks.tracks.id': 1796759555 },
{
$inc:{
'disks.$[].tracks.$[track].fix':false
}
},{
arrayFilters: [
{
"track.id": 1796759555
}
],
multi: false
}
)
文档
https://docs.mongodb.com/manual/reference/operator/update/positional-all/#update-nested-arrays-in-conjunction-with-identifier