MongoDb聚合$count显示0

New*_*Pea 3 mongodb aggregation-framework

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

6信用值为3

1信用值为 的主体6

我必须找到学分值超过 的科目总数6

我如何让它打印0

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

预期的:Total : 0

实际的:Nothing

mic*_*ckl 7

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

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

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