2015-06-19 59 views
0

我如何正确MongoDB的文档中更新resetPasswordExpires领域:如何在mongodb中正确更新嵌入对象的字段?

{ 
    "_id" : ObjectId("000"), 
    "username" : "root", 
    "isActive" : "yes", 
    "email" : "[email protected]", 
    "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

尝试'$组:{ “resetPasswordExpires”:ISODate( “2015-06-20T18:04:40.014Z”)}','的领域resetPasswordExpires'是顶如以前尝试的那样,不属于角色子文档的一部分。 – chridam

+0

欢呼声。应该看到这一点。 – jsky

回答

1

该查询需要匹配_id(至少这是它看起来你试图匹配)。 resetPasswordExpires的更新值不是roles的财产。像下面的东西应该工作:

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