MongoDB 更新嵌套数组中的字段
如何将“播放”设置为“播放照片”photos
array?
我只知道它的_id
.
"_id": ObjectId("4f41a5c7c32810e404000000"),
"albums": [
{
"_id": ObjectId("4f545d1bc328103812000000"),
"name": "album1" ,
"photos":[{
"_id": ObjectId("4f545d1bc328103812d00000"),
"name":"travel photo"
},{
"_id": ObjectId("4f545d1bc328103812c00000"),
"name":"play"
}]
},
{
"_id": ObjectId("4f545f56c328103c12000000"),
"name": "album2"
},
{
"_id": ObjectId("4f545f68c328103012000000"),
"name": "album3"
},
{
"_id": ObjectId("4f546642c328103c12000001"),
"name": "album4"
}]
此问题已得到解决。更新字段的特点
对象的嵌套数组内部,在 MongoDB 3.6+ 版本中可用。
查看位置运算符(全部并带有标识符)here https://docs.mongodb.com/manual/reference/operator/update/positional-all/.
//Update all docs in collection matching photo name "play" to "play photo"
db.collectioname.update(
{},
{ $set: { "albums.$[].photos.$[photo_field].name": "play photo" } },
{ arrayFilters: [ {"photo_field.name": "play"} ], multi: true}
);
//Update this specific doc given in question matching photo name "play" to "play photo"
db.collectioname.update(
{"_id" : ObjectId("4f41a5c7c32810e404000000")},
{ $set: { "albums.$[].photos.$[photo_field].name": "play photo" } },
{ arrayFilters: [ {"photo_field.name": "play"} ]}
);
这是为了帮助 MongoDB 3.6 之后来这里的人
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)