【发布时间】:2021-12-07 12:38:18
【问题描述】:
我需要得到不同的 categoryCode 和 categoryName 并使用重复多少文档的组合打印计数。这是匹配操作的一个条件,根据 cat_type 获取所有文档,如果 cat_type 不存在,则类别响应计数显示为 0。
样本数据:
[
{
"cat_id":1,
"categoryCode":"categoryCode1",
"categoryName":"categoryName1",
"cat_type":"A"
},
{
"cat_id":2,
"categoryCode":"categoryCode1",
"categoryName":"categoryName1",
"cat_type":"A"
},
{
"cat_id":3,
"categoryCode":"categoryCode2",
"categoryName":"categoryName2",
"cat_type":"C"
},
{
"cat_id":4,
"categoryCode":"categoryCode3",
"categoryName":"categoryName3",
"cat_type":"A"
}
]
预期输出:这里与 cat_type='A' 匹配,category1 和 category3 有 cat_type='A' 然后计数正常打印,但 category2 没有这个 cat_type 然后 category2 也显示为响应 cat_count=0
[
{
"categoryCode":"categoryCode1",
"categoryName":"categoryName1",
"cat_count": 2
},
{
"categoryCode":"categoryCode2",
"categoryName":"categoryName2",
"cat_count": 0
},
{
"categoryCode":"categoryCode3",
"categoryName":"categoryName3",
"cat_count": 1
}
]
我正在使用这个查询-https://mongoplayground.net/p/EasRK2xyLkG
db.collection.aggregate([
{
"$match": {
"cat_type": "A"
}
},
{
$group: {
_id: {
"categoryCode": "$categoryCode",
"categoryName": "$categoryName"
},
"cat_count": {
$sum: 1
}
}
},
{
$project: {
"_id": 0,
"categoryCode": "$_id.categoryCode",
"categoryName": "$_id.categoryName",
"cat_count": "$cat_count"
}
}
])
使用此查询,第二个类别不匹配,因此它没有显示。
【问题讨论】:
-
我仍然对您希望输出的外观感到困惑。
标签: mongodb mongoose mongodb-query aggregation-framework