如何过滤mongodb聚合中的主数组

How to filter the main array in mongodb aggregation

想象一个数组进入聚合管道的一个步骤,如下所示:

[{
  name: "John",
  address: { zip: 1111 }
},{
  name: "Doe",
  address: { zip: 2222 }
}]

那么,现在如果我想过滤所有 address.zip: 2222 的对象,聚合阶段会是什么样子?我对文档有点困惑,因为它只显示了在子数组中实现 $filter 以过滤子数组本身中的项目的方法。

我知道如果我只使用 find() 函数就可以实现,但这里的问题是前一阶段,事物是动态生成的,所以我需要找到一种方法在聚合本身中过滤它.

非常感谢有关此的任何帮助。谢谢!

$match ?

db.collection.aggregate([
  {
    "$match": {
      address: {
        zip: 2222
      }
    }
  }
])

mongoplayground

会是

db.collection.aggregate([
  {
    "$match": {
      "address.zip": 2222
    }
  }
])

$filter 用于从数组中删除元素,例如

{ $filter: { input: [ 1,2,3,4,5,6 ], cond: {$lt: ["$$this", 4] } } } => [1,2,3]