根据" name"更新嵌套对象领域

时间:2018-04-13 18:19:27

标签: mongodb

我是MongoDB的新手,请原谅我的无知。假设你有这份文件:

{ "_id" : ObjectId("..."), 
"google" : { "googleId" : ..., "username" : "Johnny",  
"followers" : [ { name:"niklas", email:"niklas@hotmail.com" } ] }, 
"__v" : 0 }

当管理员" Johny"获得一个新的追随者,我可以使用

添加他
       User.update(query,
         {$addToSet:{google.followers:{name:"Maria" , email:"Maria@hotmail.com"}}},
         {upsert:true,new:true}...

我的问题出现在" niklas"改变他的电子邮件使用$ addToSet只需添加一个新对象。如何更新" niklas"的现有电子邮件?或者如果没有这样的条目,则添加它; 提前致谢

1 个答案:

答案 0 :(得分:0)

要更新" niklas"的现有电子邮件,您可以使用位置" $"运营商。类似的东西:

    db.User.update(
        {"followers.name" : "niklasaa"},
       {$set: {"followers.$.email": "new-email"}}
    )