我需要使用重復的檔案數量的組合來獲取不同的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"
}
}
])
使用此查詢,第二個類別不匹配,因此作為回應它沒有顯示。
uj5u.com熱心網友回復:
- 移除
$match階段 - 求和時檢查條件,如果
cat_type是“A”則回傳 1 否則回傳 0
{
$group: {
_id: {
"categoryCode": "$categoryCode",
"categoryName": "$categoryName"
},
"cat_count": {
$sum: {
$cond: [{ $eq: ["$cat_type", "A"] }, 1, 0]
}
}
}
}
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/329204.html
標籤:MongoDB 猫鼬 mongodb-查询 聚合框架
