【问题标题】:Getting $size count with a $cond of a lookup record in mongodb使用 mongodb 中的查找记录的 $cond 获取 $size 计数
【发布时间】:2021-01-08 11:55:11
【问题描述】:

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

MongoPlayGroup Collection structure and Query

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

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

现在我得到以下结果。我正在尝试再添加一个计数列,该列将根据 finalValue 的过滤器值返回计数。基本上我想要 _id =1 的记录数

finalCount = finalValue : '成本' count = 属于 _id 1 的所有记录

【问题讨论】:

    标签: mongodb filter aggregation


    【解决方案1】:

    在投影中,可以使用$filter

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

    工作Mongo playground

    【讨论】:

      猜你喜欢
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多