我将MongoDB与Mongoose(Node.js)一起使用,我必须在聚合中对匹配结果进行分组。
喜欢,
db.test.aggregate([
{
$match: {
type: 1
}
},
{
$group : {
_id : null,
count: { $sum: 1 }
}
}
])
如果匹配了10个项目,那么结果将是
[
{
"_id": null,
"count": 10
}
]
当然,如果没有一个匹配,我希望结果是
[
{
"_id": null,
"count": 0
}
]
但是,我得到了以下结果。
[]
如果我想得到预期的结果,我该怎么办? 感谢您提前给予的帮助。
答案 0 :(得分:1)
在这种情况下,您不需要aggregate
,您可以使用简单的count
来计算匹配的项目:
db.collection.count({
type: 1
});
它总是返回一些东西,例如0
如果不匹配。
答案 1 :(得分:-1)
你应该按某种方式分组(_id不应该为空)。尝试类似:
db.test.aggregate([
{
$match: {
type: 1
}
},
{
$group : {
_id : "$type",
count: { $sum: 1 }
}
}
])