美文网首页
mongodb聚合查询

mongodb聚合查询

作者: 小青青的大胖纸 | 来源:发表于2016-04-23 17:20 被阅读0次

    一个常用group查询


    以前关系型数据库就经常有个需求

    按某字段分组,然后返回每组最近时间一条记录的集合

    最近使用mongodb也遇到了这个需求,查了不少地方也没有头绪,随手翻了翻手头的书发现了mapreduce,最后实现了

    {'group' : 
      {'ns' : 'applyuser',
      'key' : {'name':true},
      'initial' : {'applyTime' :0},
      '$reduce' : 'function(doc,prev){
                        if(doc.applyTime >prev.applyTime){
                          prev.applyTime = doc.applyTime;
                          prev.name = doc.name;
                          prev.phone =  doc.phone;
                          prev._id = doc._id;}}', 
        'condition' : {'actID' : "+actID+"}
      }
    }
    

    mongotemplate代码如下

    String jsonReduce = "{'group' : {'ns' : 'applyuser','key' : {'name':true},'initial' : {'applyTime' : 0},'$reduce' : 'function(doc,prev){if(doc.applyTime > prev.applyTime){prev.applyTime = doc.applyTime;prev.name = doc.name;prev.phone = doc.phone;prev._id = doc._id;}}', 'condition' : {'actID' : "+actID+"}}}";
    CommandResult mapReduce = mongoTemplate.executeCommand(jsonReduce);
    List<BasicDBObject> l = (List<BasicDBObject>)mapReduce.get("retval");

    相关文章

      网友评论

          本文标题:mongodb聚合查询

          本文链接:https://www.haomeiwen.com/subject/edzxrttx.html