我想基于MongoDB中存储的数据实现直方图。我希望根据分组获得数量。我必须根据一个输入值(即组数)创建存储桶。例如group = 4 考虑有多个事务正在运行,我们将事务时间存储为其中一个字段。我想根据完成交易所需的时间来计算交易次数。 如何使用聚合框架或map reduce来创建分组?
Sample data:
{
"transactions": {
"149823": {
"timerequired": 5
},
"168243": {
"timerequired": 4
},
"168244": {
"timerequired": 10
},
"168257": {
"timerequired": 15
},
"168258": {
"timerequired": 8
},
"timerequired": 18
}
}
在输出中,我想打印存储桶大小和事务计数属于该存储桶。
水桶计数
0-5 2
5-10 2
10-15 1
15-20 1
答案 0 :(得分:0)
从mongo 3.4版开始,功能$bucket和$bucketAuto可用。他们可以轻松解决您的请求:
db.transactions.aggregate( [
{
$bucketAuto: {
groupBy: "$timerequired",
buckets: 4
}
}
])