MongoDB 根据条件按计数分组
Posted
技术标签:
【中文标题】MongoDB 根据条件按计数分组【英文标题】:MongoDB group by count based on condition 【发布时间】:2019-02-11 13:55:33 【问题描述】:我有以下 mongo DB 架构:
"_id" : "5b76c3c037548390fdb5b40e",
"userId" : "4601",
"modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
"rStatus" : "started",
,
"_id" : "5b76c3c037548390fdb5b40e",
"userId" : "13",
"modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
"rStatus" : "completed",
,
........
需要通过rStatus字段的修改日期和计数来获取数据组,例如
modified:"2018-08-21",
count :"completed":1,"ongoing":4
,
modified:"2018-07-23",
count :"completed":2,"ongoing":5
,
我正在使用 $group,但它仅按修改日期计算,而不是按内部键的值。
【问题讨论】:
这可能是答案db.collection.aggregate([ "$group": "_id": "$dateToString": "date": "$modified", "format": "%Y-%m-%d" , "completed": "$sum": "$cond": [ "$eq": [ "$rStatus", "completed" ] , 1, 0 ] ])
@AnthonyWinzlet,谢谢,它的工作
【参考方案1】:
您可以在 3.6 中使用以下聚合。
db.colname.aggregate([
"$group":
"_id":
"date":"$dateToString":"date":"$modified","format":"%Y-%m-%d",
"rstatus":"$rStatus"
,
"count":"$sum":1
,
"$group":
"_id":"$_id.date",
"count":"$mergeObjects":"$arrayToObject":[[["$_id.rstatus","$count"]]]
])
【讨论】:
以上是关于MongoDB 根据条件按计数分组的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB聚合使用表达式运算符(函数)分组按条件计数统计案例一则
MongoDB聚合使用表达式运算符(函数)分组按条件计数统计案例一则