Mongo
里现有一批数据,大致结构如下:
{"userId":1,"loginTime":ISODate("2017-11-28T10:47:57.525+08:00")}
{"userId":2,"loginTime":ISODate("2017-11-28T11:47:57.525+08:00")}
{"userId":1,"loginTime":ISODate("2017-11-28T12:47:57.525+08:00")}
{"userId":3,"loginTime":ISODate("2017-11-28T13:47:57.525+08:00")}
要按userId
字段去重后统计总数,示例数据返回结果应该是:3,在SHELL
中可以使用
db.logins.distinct("userId").length
来查询,但在spring-data-mongo
中使用MongoTemplate
怎样实现相同功能,注意不能使用distinct
把结果都查出来后取size
,实际的数量级可能比较大,如千万级别。
另外听说Mongo
中distinct
结果集不能超过16MB
(不确定),那么上面SHELL
中的用法应该也会有问题。
整个需求可以简单描述为:查询每日登录人数(注意不是人次)
浏览好多文档博客,都找不到舒服点的答案。不过最终还是找到了,在这里记录一下:
原理是,先使用第一个分组对指定键上的所有值去重,然后使用第二个分组统计这些值。
原参考文档:http://www.forwardadvance.com...