如何基于猫鼬中的对象ID列表删除数组项?

时间:2020-04-10 15:40:48

标签: javascript node.js mongodb mongoose

我对此感到困惑,我想您可以通过某种方式为我提供帮助,它从前端为我提供了一个数字列表,其中包含要删除的对象的ID,例如:

{
  "user":"TEST",
  "conditionsToDelete":[1586513509594,1586513519698]
}

我在mongo上的文档如下:

enter image description here

如您所见,文档> conditionConfig> id

上有一个名为id的属性。

因此,从前面出现的这个列表具有该ID,我必须使用该ID来过滤和删除匹配的对象。

我该怎么做?我一直在尝试以下方法:

let resBusqueda = await this.conditionModel.find({ user: conditionsPack.user });
    resBusqueda.forEach(condicionPack => {
      let condicionesFiltradas = [];

      condicionPack.conditionConfig.forEach(condicion => {
        let idAnalizadoActualSubcondicion = conditionsPack.conditionsToDelete.indexOf(condicion.id);
        if (idAnalizadoActualSubcondicion == -1) {
          condicionesFiltradas.push(condicion);
        }
      });
      condicionPack.conditionConfig = condicionesFiltradas;
      condicionesFiltradas = [];
    });

我收到文档并对其进行了一些更改,但是如何保存它们?

提前

1 个答案:

答案 0 :(得分:1)

here中有一个很好的例子。但这对您可能已经足够了:

db.YourModel.update(
    { }, // conditions that specify your user instance
    { $pull: { firstArray: { $in: arrayOfObjectIds }, secondArray: "single ID" } },
    { multi: true }
)

我为您提供了删除单个元素的示例,并针对您的情况,介绍了要删除的元素数组。