【问题标题】: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" }
}
}
])