如何在特定字段 MongoDB 上查找 Distinct No of Document 并根据条件打印文档数?
Posted
技术标签:
【中文标题】如何在特定字段 MongoDB 上查找 Distinct No of Document 并根据条件打印文档数?【英文标题】:How to find Distinct No of Document on specific field MongoDB and print document count based on condition? 【发布时间】: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"
])
使用此查询,第二个类别不匹配,因此它没有显示。
【问题讨论】:
我仍然对您希望输出的外观感到困惑。 【参考方案1】: 删除$match
舞台
求和时检查条件,如果cat_type
为“A”则返回1,否则返回0
$group:
_id:
"categoryCode": "$categoryCode",
"categoryName": "$categoryName"
,
"cat_count":
$sum:
$cond: [ $eq: ["$cat_type", "A"] , 1, 0]
Playground
【讨论】:
db.collection.aggregate([ "$group": "_id": "categoryCode": "$categoryCode", "categoryName": "$categoryName", , "catCount" : "$sum": "$cond": "if": "$eq": ["$cat.type", "A" ] , "then": 1, "else": 0 , "$project": "categoryCode": "$_id.categoryCode", "categoryName": "$_id.categoryName", "catCount": 1, "_id": 0 ]) 我正在使用这个查询,因为 cat 是一个数组,并且在这个数组属性中的类型有 'A' 和检查条件,但是带有点的数组部分不起作用,当我在数组外部检查时然后它工作。如何解决这个问题 原始 json 看起来像这样 [ "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"] ] ***.com/questions/69658059/…以上是关于如何在特定字段 MongoDB 上查找 Distinct No of Document 并根据条件打印文档数?的主要内容,如果未能解决你的问题,请参考以下文章