0

0

MongoDB高级查询[聚合Group]

php中文网

php中文网

发布时间:2016-06-07 17:28:01

|

1246人浏览过

|

来源于php中文网

原创

接上一篇... 见: http://www.linuxidc.com/Linux/2013-04/82787.htm Group 为了方便我还是把我的表结构贴上来: 和数据库一样g

接上一篇... 见: 

  • Group
  • 为了方便我还是把我的表结构贴上来:

    和数据库一样group常常用于统计。MongoDB的group还有很多限制,如:返回结果集不能超过16M,, group操作不会处理超过10000个唯一键,好像还不能利用索引[不很确定]。

     

    Group大约需要一下几个参数。

    下面我用Java对他们做一些测试。

    我们以age年龄统计集合中存在的用户。Spring Schema和上次的一样。有了MongoTemplate对象我们可以做所有事的。以age统计用户测试代码如:

    @Test
        public void testGroupBy() throws Exception {
            String reduce = "function(doc, aggr){" +
                    "            aggr.count += 1;" +
                    "        }";
            Query query = Query.query(Criteria.where("age").exists(true));
            DBObject result = mongoTemplate.getCollection("person").group(new BasicDBObject("age", 1),
                    query.getQueryObject(),
                    new BasicDBObject("count", 0),
                    reduce);
           
            Map map = result.toMap();
            System.out.println(map);
            for (Map.Entry o : map.entrySet()) {
                System.out.println(o.getKey() + "  " + o.getValue());
            }
        }

    CRMEB Min开源商城
    CRMEB Min开源商城

    CRMEB Min是CRMEB品牌全新推出的一款轻量级、高性能、前后端分离的开源电商系统,完善的后台权限管理、会员管理、订单管理、产品管理、客服系统、CMS管理、多端管理、页面DIY、数据统计、系统配置、组合数据管理、日志管理、数据库管理,一键开通短信、产品采集、物流查询等接口,系统采用TP6+Mysql+Uniapp+iView+Redis+workerman+form-builder等最流行热

    下载

    keynew BasicDBObject("age", 1)

    cond为:Criteria.where("age").exists(true)。即用户中存在age字段的。

    initial为:new BasicDBObject("count", 0),即初始化reduce中人的个数为count0。假如我们想在查询的时候给每个年龄的人增加10个假用户。我们只需要传入BasicDBObject("count", 10).

    reduce为:reducejavascript函数

    上面的执行输出如:

    2  [age:23.0, count:1.0]
    1  [age:25.0, count:1.0]
    0  [age:24.0, count:1.0]

    前面的是一个序号,是Mongo的java-driver加上去的。我们可以看到结果在后面。

    linux

    相关专题

    更多
    php源码安装教程大全
    php源码安装教程大全

    本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

    7

    2025.12.31

    php网站源码教程大全
    php网站源码教程大全

    本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

    4

    2025.12.31

    视频文件格式
    视频文件格式

    本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

    7

    2025.12.31

    不受国内限制的浏览器大全
    不受国内限制的浏览器大全

    想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

    7

    2025.12.31

    出现404解决方法大全
    出现404解决方法大全

    本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

    42

    2025.12.31

    html5怎么播放视频
    html5怎么播放视频

    想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

    4

    2025.12.31

    关闭win10系统自动更新教程大全
    关闭win10系统自动更新教程大全

    本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

    3

    2025.12.31

    阻止电脑自动安装软件教程
    阻止电脑自动安装软件教程

    本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

    3

    2025.12.31

    html5怎么使用
    html5怎么使用

    想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

    2

    2025.12.31

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Go语言实战之 GraphQL
    Go语言实战之 GraphQL

    共10课时 | 0.8万人学习

    MySQL 初学入门(mosh老师)
    MySQL 初学入门(mosh老师)

    共3课时 | 0.3万人学习

    开源物联网开发实例
    开源物联网开发实例

    共6课时 | 0.4万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号