想要在mongodb中更新文档?

时间:2014-07-08 09:59:01

标签: mongodb

我在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和电子邮件具有唯一索引。

1 个答案:

答案 0 :(得分:2)

您正在指定" _id"用于更新错误。当你使用_id时使用MongoDB ObjectIds时,当你使用_id查询或更新时,你需要调用ObjectId()。

在您的情况下,此代码有效:

db.talents.update({"_id" : ObjectId("53bba63f5ef7980c092dae11")}, {$set : {"auth.password" :"Saurabh123"}})

请注意,我已经在您正在使用的字符串周围添加了对ObjectId()的调用。