2015-06-19 7 views
0

Как я правильно обновить resetPasswordExpires поле в MongoDB документа:Как правильно обновить поле встроенного объекта в 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

Try '$ множество: { "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")} 
}); 
Смежные вопросы