在MongoDB中对直方图进行分段和计数

时间:2016-12-13 21:19:12

标签: mongodb

我想基于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

1 个答案:

答案 0 :(得分:0)

从mongo 3.4版开始,功能$bucket$bucketAuto可用。他们可以轻松解决您的请求:

db.transactions.aggregate( [
   {
     $bucketAuto: {
         groupBy: "$timerequired",
         buckets: 4
     }
   }
])