运行诸如以下的聚合:
[
{
"$match":{
"datasourceName":"Startup Failures",
"sheetName":"Data",
"Cost":{
"$exists":true
},
"Status":{
"$exists":true
}
}
},
{
"$group":{
"Count of Cost":{
"$sum":1
},
"Count of Status":{
"$sum":1
},
"_id":null
}
},
{
"$project":{
"Count of Cost":1,
"Count of Status":1
}
}
]
存在过滤器的结果实际上是过滤掉不包含“成本”或“状态”的整个文档。这样成本和状态的预测(计数)是相同的。我不想只过滤单个列的整个文档,以使我得到的投影是存在成本的文档数(成本计数),而另一个投影是存在状态的文档数。就我的数据而言,这些将给出两个单独的数字。
我使用$facet
进行汇总;这允许并行查询每个文档传递。因此,我们将Cost
和Status
进行查询并将其计为同一查询的两个方面。