如何在特定字段 MongoDB 上找到不同的文档编号并根据条件打印文档计数?
How to find Distinct No of Document on specific field MongoDB and print document count based on condition?
我需要获取不同的 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"
}
}
])
对于此查询,第二个类别不匹配,因此在响应中它没有显示。
- 移除
$match
阶段
- 求和时检查条件,如果
cat_type
是“A”那么return1否则0
{
$group: {
_id: {
"categoryCode": "$categoryCode",
"categoryName": "$categoryName"
},
"cat_count": {
$sum: {
$cond: [{ $eq: ["$cat_type", "A"] }, 1, 0]
}
}
}
}
我需要获取不同的 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"
}
}
])
对于此查询,第二个类别不匹配,因此在响应中它没有显示。
- 移除
$match
阶段 - 求和时检查条件,如果
cat_type
是“A”那么return1否则0
{
$group: {
_id: {
"categoryCode": "$categoryCode",
"categoryName": "$categoryName"
},
"cat_count": {
$sum: {
$cond: [{ $eq: ["$cat_type", "A"] }, 1, 0]
}
}
}
}