Home > Database > Mysql Tutorial > body text

MongoDB高级查询[聚合Group]

WBOY
Release: 2016-06-07 17:28:01
Original
1159 people have browsed it

接上一篇... 见: 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());
            }
        }

    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

    Related labels:
    source:php.cn
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template