我在mongodb中有如下文档:
{
"_id" : ObjectId("53bba63f5ef7980c092dae11"),
"traits" : [],
"skills" : [],
"name" : {
"first" : "Abc",
"last" : "abc"
},
"auth" : {
"email" : "ghewari.saurabh09@gmail.com",
"password" : "12345678"
},
}
我想更新密码。更新我这样做
db.talents.update({"_id": "53bba63f5ef7980c092dae11"},
{$set : {"auth.password": "Saurabh123"}})
查询执行但不更新密码。请告诉我我在哪里弄错了?
当我使用upsert: true
时,它会出现以下错误
Error : - insertDocument :: caused by :: 11000 E11000 duplicate key error index:
talent.talents.$auth.email_1 dup key: { : null }
ID和电子邮件具有唯一索引。
答案 0 :(得分:2)
您正在指定" _id"用于更新错误。当你使用_id时使用MongoDB ObjectIds时,当你使用_id查询或更新时,你需要调用ObjectId()。
在您的情况下,此代码有效:
db.talents.update({"_id" : ObjectId("53bba63f5ef7980c092dae11")}, {$set : {"auth.password" :"Saurabh123"}})
请注意,我已经在您正在使用的字符串周围添加了对ObjectId()的调用。