对不起,如果标题不清楚,我不知道该怎么办。
假设我具有以下架构:
{
name: {
type: String
},
additionalInfo: {
someInfo: {
a: {
type: String
},
b : {
type: String
}
}
}
}
现在说我想创建一个仅更改字段b
且仅更改b
的函数。
function changeB(id, newB) {
return new Promise((resolve, reject) => {
myModel.findByIdAndUpdate(id, { additionalInfo: { someInfo: { b } } }, (err, doc) => {
if(err) reject(err);
if(doc) resolve(doc);
reject();
});
});
}
这里的问题是该函数将覆盖该文档的整个additionalInfo
。因此,如果我也有一个a
值,那么在运行该函数后它将消失。我该怎么做才能只更改additionalInfo.someInfo.b
?
答案 0 :(得分:1)
实际上,在写这个问题时(尤其是最后一句话),我自己弄清楚了。跟随函数仅更改additionalInfo.someInfo.b
,而不会删除其他任何内容。
function changeB(id, newB) {
return new Promise((resolve, reject) => {
myModel.findByIdAndUpdate(id, { 'additionalInfo.someInfo.b': newB }, (err, doc) => {
if(err) reject(err);
if(doc) resolve(doc);
reject();
});
});
}