MongoDB高级查询[聚合Group]

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

接上一篇… 见: 

Group

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

MongoDB高级查询[聚合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());
        }
    }

绘蛙AI修图 绘蛙AI修图

绘蛙平台AI修图工具,支持手脚修复、商品重绘、AI扩图、AI换色

绘蛙AI修图 285 查看详情 绘蛙AI修图

key为new BasicDBObject(“age”, 1)

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

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

reduce为:reduce的javascript函数

上面的执行输出如:

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1046337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CSS3D变换怎么用_CSS实现3D变换效果指南
上一篇 2025年12月2日 08:10:33
索尼Xperia 1 VI手机官图曝光:砍掉祖传4K带鱼屏、配骁龙8 Gen3
下一篇 2025年12月2日 08:10:40

相关推荐

发表回复

登录后才能评论
关注微信