猫鼬在json中查找和更新json

时间:2020-09-09 21:36:37

标签: javascript mongodb typescript mongoose

对不起,如果标题不清楚,我不知道该怎么办。

假设我具有以下架构:

{
  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

1 个答案:

答案 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();
    });
  });
}
相关问题