mongodb根据一个字段的范围进行数量统计

我的模型里有个字段是时间戳,我想根据这个字段统计每一天的数据,数据量在百万级。
目前我能想到的是全部查询出来,然后自己对数据进行排序分组。本来想用Aggregate来做,但是把操作符看了一遍不知道怎么组合起来才能实现,然后还有就是mapReduce,查了下得知mapReduce查询很慢,所以不知道怎么办了。希望大家可以推荐一个最好的方式

阅读 6.7k
2 个回答

什么样的数据?如果是时序数据,历史情况不会变,建议每天统计一次,把结果存下来以后直接取用即可,不要每次都去进行不必要的运算。
aggregate是推荐的取代map/reduce的聚合框架。如果以上假设成立,楼上的办法也可以达成。但是要注意count在分片集中给出的是不精确结果,想要精确结果还是请用aggregate

新手上路,请多包涵

统计每一天的数据总数吗?, 时间戳是存入mongodb 是int32 or int64吗? 满足以上条件,可以如下

db.find("timeStamp":{"$lt":456,"$gte":123}).count()

count() 是聚合的一种

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题