我有一份这种形式的文件
{
"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
}
}
我无法使用:
db.users.update({name: "John"}, {$set: {"preferences.xxx": false}})
因为我不知道我要更新哪个特定字段,所以我只输入一个可能包含或不包含preferences
文档的每个字段的对象。
答案 0 :(得分:2)
尝试在更新之前创建更新对象。例如,如果您输入了对象PCMU
,则可以使用JavaScript的 bracket notation 来创建更新对象,如下所示:
{"xxx": false, "abc": false}