我的模型里有个字段是时间戳,我想根据这个字段统计每一天的数据,数据量在百万级。
目前我能想到的是全部查询出来,然后自己对数据进行排序分组。本来想用Aggregate来做,但是把操作符看了一遍不知道怎么组合起来才能实现,然后还有就是mapReduce,查了下得知mapReduce查询很慢,所以不知道怎么办了。希望大家可以推荐一个最好的方式
我的模型里有个字段是时间戳,我想根据这个字段统计每一天的数据,数据量在百万级。
目前我能想到的是全部查询出来,然后自己对数据进行排序分组。本来想用Aggregate来做,但是把操作符看了一遍不知道怎么组合起来才能实现,然后还有就是mapReduce,查了下得知mapReduce查询很慢,所以不知道怎么办了。希望大家可以推荐一个最好的方式
统计每一天的数据总数吗?, 时间戳是存入mongodb 是int32 or int64吗? 满足以上条件,可以如下
db.find("timeStamp":{"$lt":456,"$gte":123}).count()
count() 是聚合的一种
5 回答4.8k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
1 回答3.2k 阅读
什么样的数据?如果是时序数据,历史情况不会变,建议每天统计一次,把结果存下来以后直接取用即可,不要每次都去进行不必要的运算。
aggregate
是推荐的取代map/reduce
的聚合框架。如果以上假设成立,楼上的办法也可以达成。但是要注意count在分片集中给出的是不精确结果,想要精确结果还是请用aggregate
。