温馨提示:本文翻译自stackoverflow.com,查看原文请点击:mongodb - Remove element from array aggregate
mongodb aggregation-framework aggregate-functions

mongodb - 从数组聚合中删除元素

发布于 2020-03-29 22:04:47

如何遍历数组并删除基于字段的特定元素。

这是我的布局-位于名为case的集合中:

**集合包含companyID,案例[Array],lastModified **

在此处输入图片说明

因此,我将必须使用汇总来展开案例,然后搜索等于“ 17”的案例编号:

db.cases.aggregate([
    { $match: { companyID: 218}},
    { $unwind: '$cases' },
    { $match: {'cases.casenumber': '17'} }
])

返回:

在此处输入图片说明

但是现在我只想删除该特定项目。

谢谢。

查看更多

提问者
Andrew
被浏览
134
Grégory NEUT 2020-01-31 19:00

您可以使用一个updateMany请求。第一个参数是匹配条件,第二个参数是action

$ pull是一个特殊的关键字,它将从数组中删除匹配的元素。

   db.collection.updateMany({
       companyID: 218,
    }, {
       $pull: {
          cases: {
             casenumber: 17,
          },
       },
    })

https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/

https://docs.mongodb.com/manual/reference/operator/update/pull/


doc中的示例:

db.profiles.update( { _id: 1 }, { $pull: { votes: { $gte: 6 } } } )