如何在mongodb中正确更新嵌入对象的字段?

时间:2015-06-19 15:53:02

标签: mongodb

如何正确更新mongodb文档中的resetPasswordExpires字段:

{ 
    "_id" : ObjectId("000"), 
    "username" : "root", 
    "isActive" : "yes", 
    "email" : "email@gmail.com", 
    "roles" : { 
        "admin" : ObjectId("111") 
    }, 
    "resetPasswordExpires" : ISODate("2015-06-19T18:04:40.014Z"),
    "resetPasswordToken" : "token" 
}

我试过了:

db.users.update(
    { item: "000" },
    {
      $set: {  "roles.resetPasswordExpires":  ISODate("2015-06-20T18:04:40.014Z")}
})

db.users.update(
    { item: "111" },
    {
      $set: {  "roles.resetPasswordExpires":  ISODate("2015-06-20T18:04:40.014Z")}
})

以及其他一些没有匹配的变体。

1 个答案:

答案 0 :(得分:1)

查询需要在_id上匹配(至少这是您尝试匹配的内容)。 resetPasswordExpires的更新值不是roles的属性。以下内容应该有效:

db.users.update(
  { _id: ObjectId("000") },
  {$set: {  "resetPasswordExpires":  ISODate("2015-06-20T18:04:40.014Z")}
});