使用 mongodb 中查找记录的 $cond 获取 $size 计数

Getting $size count with a $cond of a lookup record in mongodb

下面是我在 Playgroun 上的查询和数据,它适用于两个集合

MongoPlayGroup Collection structure and Query

在查询中,我试图再添加一个 $match 条件,其中 return 我是子文档的计数,即 collectB 在过滤器之后,如下所示

{
   $match: {
          'collectB.finalValue' : 'Cost'
   }
}

现在我得到以下结果。我正在尝试添加一个计数列,该列将 return 计数,具体取决于 finalValue 的过滤器值。基本上我想要 _id =1

的记录数

最终计数 = 最终值:'Cost' count = 所有记录属于 _id 1

在投影中,可以使用$filter

{
    $project: {
      "_id": 1,
      count: {
        $size: {
          $filter: {
            input: "$collectB",
            cond: {
              $eq: [
                "$$this.finalValue",
                "Cost"
              ]
            }
          }
        }
      },
      "collectB.generated": 1,
      "collectB.finalValue": 1
    }
  }

工作Mongo playground