javascript - 如何根据 Mongoose 中的对象ID列表删除数组项?

标签 javascript node.js mongodb mongoose

我被这个问题困扰了,我想你可以以某种方式帮助我,它从前端给我提供了一个数字列表,其中包含要删除的对象的 id,例如:

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

我在 mongo 上的文档如下所示:

enter image description here

如您所见,文档中有一个名为 id 的属性 > conditionConfig > 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 = [];
    });

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

提前

最佳答案

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

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

我为您带来了单个元素删除的示例,以及针对您的情况的要删除的元素数组。

关于javascript - 如何根据 Mongoose 中的对象ID列表删除数组项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61143703/

相关文章:

node.js - node.js 中的 RPC 和消息队列

javascript - ExtJs:如何在 html 中使用变量

javascript - Chrome 扩展程序化 UI 注入(inject)

node.js - 如何查询 mongoose 以便搜索必须匹配两个 id

node.js - MongoDB 返回结果的关联数组

MongoDB 以并行阶段展开或组合

mongodb - Mongoose/MongoDB - 保存记录以覆盖当前数据 :

javascript - 仅当选择一行时才显示一些 html

javascript - 如何检查div是否为空?

node.js - 如何在node.js中的compoundjs应用程序中模拟 session 对象