【问题标题】:MongoDb Aggregation $count to display 0 [duplicate]MongoDb聚合$count显示0 [重复]
【发布时间】:2019-10-14 08:32:27
【问题描述】:

我有一个包含7 主题的集合。

6信用值为3的科目

1 信用值为6 的主题。

我必须找到信用值超过6的科目总数。

如何让它打印0

db.Subject.aggregate([{$match:{"subject.prerequisite":{$gt:6}}},
                      {$count:"Total"}])

预期:Total : 0

实际:Nothing

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:

    由于您的$match 不返回任何文档,MongoDB 只是停止处理进一步的管道阶段,这在这种情况下有点违反直觉,因为您希望 $count 始终返回文档的数量,即使它是 0

    如果您想获得total 值,您可以利用$facet 运算符,尝试:

    db.Subject.aggregate([
        {
            $facet: {
                matched: [ {$match:{"subject.prerequisite":{$gt:6}}} ]
            }
        },
        {
            $project: {
                Total: { $size: "$matched" }
            }
        }
    ])
    

    【讨论】:

      猜你喜欢
      • 2015-08-14
      • 2021-03-31
      • 1970-01-01
      • 2016-04-13
      • 2022-01-20
      • 2020-01-25
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      相关资源
      最近更新 更多