如何使用单个脚本基于mongoDB中的不同过滤器更新不同文档的子文档值
{
"_id" : ObjectId("5aa2516c732e89b875rtg"),
"username" : "user1",
"password" : "password1",
"level0" : {
"level1" : {
"value1" : 2,
"value2" : 2
}
}
},
{
"_id" : ObjectId("5aa2516c732e89b8hy5"),
"username" : "user2",
"password" : "password2",
"level0" : {
"level1" : {
"differntvalue1" : 2,
"differntvalue2" : 2
}
}
}
这里我只想通过运行单个脚本来更新文档(在子文档中添加新值),结果应该如下所示
{
"_id" : ObjectId("5aa2516c732e89b875rtg"),
"username" : "user1",
"password" : "password1",
"level0" : {
"level1" : {
"value1" : 2,
"value2" : 2,
"value3" : 2
}
}
},
{
"_id" : ObjectId("5aa2516c732e89b8hy5"),
"username" : "user2",
"password" : "password2",
"level0" : {
"level1" : {
"differntvalue1" : 2,
"differntvalue2" : 2,
"differntvalue3" : 2
}
}
}
MongoDB: Upserting and Sub documents - 这个答案很有帮助,但不允许同时对不同的文档进行不同的更新。
答案 0 :(得分:0)
我只是为每个文档尝试了不同的更新命令。有没有办法与单个更新一起完成?
db.mycollection.update(
{"username": "user1"},
{
$set :{
"level0.level1.value3" : 2
}
});
db.mycollection.update(
{"username": "user2"},
{
$set :{
"level0.level1.differntvalue3" : 2
}
});