У меня есть документ в таком виде
{
"firstName": "John",
"lastName": "Doe",
"preferences": {
"xxx": true,
"yyy": false,
"zzz": true
}
}
Я хочу обновить определенные поля в preferences
внедренного документа. Если я использую $set
операнд следующим образом
db.users.update({name: "John"}, {$set: {preferences: {"xxx": false}}})
preferences
документ полностью заменен, так что я получаю эту
{
"firstName": "John",
"lastName": "Doe",
"preferences": {
"xxx": false
}
}
в то время как я хотел бы получить этот
{
"firstName": "John",
"lastName": "Doe",
"preferences": {
"xxx": false,
"yyy": false,
"zzz": true
}
}
I не может использоваться:
db.users.update({name: "John"}, {$set: {"preferences.xxx": false}})
, потому что я не знаю, какое конкретное поле я собираюсь обновить, у меня есть только входной объект, который может содержать или не содержать каждое поле документа preferences
.