icp许可证对网站的要求,wordpress怎么做网页,网站建设费用 知乎,河南企起网站建设在使用MonoDB 做报表汇总经常的有去重统计总数的需求,在此总结一下实现方式:
1, 直接使用distinct 语句查询, 这种查询会将所有查询出来的数据返回给用户, 然后对查询出来的结果集求总数(耗内存,耗时一些)
var len db.student.distinct(name,{age :…在使用MonoDB 做报表汇总经常的有去重统计总数的需求,在此总结一下实现方式:
1, 直接使用distinct 语句查询, 这种查询会将所有查询出来的数据返回给用户, 然后对查询出来的结果集求总数(耗内存,耗时一些)
var len db.student.distinct(name,{age : 18}).length;
print(len)
注,使用这种方法查询时,查询的结果集大于16M 时会查询失败,失败信息如下: {“message” : “distinct failed: MongoError: distinct too big, 16mb cap”,”stack” : “script:1:20”}
2, 使用聚合函数,多次分组统计结果,最终将聚合的结果数返回给用户
db.student.aggregate([{$match:{age : 18}},{$project:{name:true}},{$group:{_id:$name}},{$group:{_id:null,count:{$sum:1}}}
])
注,这种查询数据量大时就不会出现如上查询失败的情况,而且这种查询不管是内存消耗还是时间消耗都优于上面一种查询.
原文参见个人博客http://www.xuexiyuan.cn/article/detail/148.html