在使用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

MongoDB 去重(distinct)查询后求总数(count)相关推荐

  1. MongoDB去重后求总数

    错误的方法 我们要获取唯一的电子邮箱,使用到 distinct, 例如 db.user_info.distinct('email') 得到的是一个列表: ["123@gmail.com&qu ...

  2. mysql查询去重后的总数

    mysql 查询去重 建议以后给出列名.数据示例,这样我们写的SQL你可以粘贴运行- SELECTDISTINCT表1.列2,表1.列1 FROM表1 WHERE表1.列2IN(SELECT列1FRO ...

  3. Database之SQLSever:SQL命令实现四则运算、desc降序、like模糊查询、distinct去重、MAX/MIN/SUM/AVG/COUNT/GROUP/having等案例之详细攻略

    Database之SQLSever:SQL命令实现四则运算.desc降序.like模糊查询.distinct去重.MAX/MIN/SUM/AVG/COUNT/GROUP/having等案例之详细攻略 ...

  4. mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...

    另外附上mongodb eclipse插件地址: http://www.jumperz.net/update/ import java.net.UnknownHostException;import ...

  5. 【mysql快速入门】牛客网:查询所有列查询多列查询结果去重查询结构返回限制行数将查询后的列重新命名

    题目:现在运营想要查看用户信息表中所有的数据,请你取出相应结果 示例:user_profile id device_id gender age university province 1 2138 m ...

  6. JAVA | MongoDB 去重、聚合函数、Criteria Query使用

    前言 最近项目工作中遇到mongo复杂查询的语句使用,其中使用到数据去重,分组查询. 去重 mongo中去重和sql语句一样都是使用distinct // 对时间范围内的name字段去重 db.get ...

  7. mysql中去重的用法_mysql中去重 distinct 用法

    在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count( ...

  8. mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解

    一 distinct 含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而 ...

  9. QBC的distinct查询

    1. 分页中有重复记录统计总的条数 int total = ((Integer)criteria.setProjection(Projections.countDistinct("id&qu ...

最新文章

  1. PostgreSQL在何处处理 sql查询之十二
  2. win8.1适合哪个版本的linux,紧跟Win8 全面体验最适合国人的深度Linux
  3. Leetcode题库 19.删除链表的倒数第N个结点(双指针法 C实现)
  4. 一个电脑的重装到java开发环境安装配置的全过程
  5. Bootstrap 插件的选项
  6. CANN 5.0硬核技术抢先看
  7. 一文带你认识队列数据结构
  8. elasticsearch配置优化
  9. jQuery.noConflict() 解决冲突 原理深入
  10. 2185. 统计包含给定前缀的字符串
  11. 汉诺塔c++_C语言,递归解决汉诺塔问题
  12. 基于二维激光雷达的三维激光扫描系统的设计与实现
  13. 吴恩达老师深度学习课程完整笔记
  14. Jetbrain Rider的一些相关设置
  15. 关于我为什么跨考计算机研究生以及对未来的思考
  16. 二叉树、B树(B-树)、B+树、B*树详解,以及为什么MySQL选择B+树做索引
  17. 云计算 常见问题案例汇总情况
  18. stc15系列c语言pwm编程,分享一下stc15单片机的PWM波程序
  19. 解决Word文章表格中无法自动换页的问题,表格结尾处像是被下一页覆盖掉了
  20. Docker容器-------网络模式,数据卷和数据卷容器

热门文章

  1. python标准库模块_Python标准库模块之heapq
  2. Servlet拦截器
  3. java mvc 面试题_2018年java技术面试题整理
  4. 桌面怎么设置 计算机 网络,Win10 10130桌面电脑网络图标怎么设置?
  5. php 时间选择,PHP-在学说2中的日期之间选择条目
  6. python用import xlwt出现红字_如何用python处理excel
  7. 解决 There are no resources that can be added or removed from the server
  8. mysql 存储过程 记录是否存在_如何检查MySQL中是否存在存储过程?
  9. js对象数组(JSON) 根据某个共同字段分组
  10. 前端基础-HTML的的标签详解