zoukankan      html  css  js  c++  java
  • MongoDB的group分组操作

    先插入测试数据:

    for(var i=1; i<20; i++){

        var num=i%6;

        db.test.insert({_id:i,name:"user_"+i,age:num});

    }

    1.普通分组查询(http://www.my400800.cn

    db.test.group({key:{age:true},initial:{num:0},$reduce:function(doc,prev){

    prev.num++

    }});

    db.runCommand({group:

    {

    ns:"test",

    key:{age:true},

    initial:{num:0},

    $reduce:function(doc,prev){

    prev.num++}

    }

    });

    2.筛选后再分组

    db.test.group({key:{age:true},initial:{num:0},$reduce:function(doc,prev){

    prev.num++

    },

    condition:{age:{$gt:2}}

    });

    db.runCommand({group:

    {

    ns:"test",

    key:{age:true},

    initial:{num:0},

    $reduce:function(doc,prev){

    prev.num++},

    condition:{age:{$gt:2}}

    }

    });

    普通的$where查询:

    db.test.find({$where:function(){

    return this.age>2;

    }

        });

    group联合$where查询

    db.test.group({key:{age:true},initial:{num:0},$reduce:function(doc,prev){

    prev.num++

    },

    condition:{$where:function(){

    return this.age>2;

    }

        }

    });

    3.使用函数返回值分组

    //注意,$keyf指定的函数一定要返回一个对象

    db.test.group({$keyf:function(doc){return {age:doc.age};},initial:{num:0},$reduce:function(doc,prev){

    prev.num++

    }

    });

    db.runCommand({group:

    {

    ns:"test",

    $keyf:function(doc){return {age:doc.age};},

    initial:{num:0},

    $reduce:function(doc,prev){

    prev.num++}

    }

    });

    4.使用终结器

    db.test.group({$keyf:function(doc){return {age:doc.age};},initial:{num:0},$reduce:function(doc,prev){

    prev.num++

    },

    finalize: function(doc){ doc.count=doc.num;delete doc.num; }

    });

    db.runCommand({group:

    {

    ns:"test",

    $keyf:function(doc){return {age:doc.age};},

    initial:{num:0},

    $reduce:function(doc,prev){

    prev.num++},

    finalize: function(doc){ doc.count=doc.num;delete doc.num; }

    }

    });

  • 相关阅读:
    Viewer.js 图片预览插件使用
    SqlServer关于“无法删除数据库 "XXXX",因为该数据库当前正在使用”问题的解决方案
    MySQL数据类型详解
    Node.js安装详细步骤教程(Windows版)
    RGB颜色查询对照表
    HTML加载FLASH(*.swf文件)详解
    Cesium区分单击【LEFT_CLICK】和双击事件【LEFT_DOUBLE_CLICK】
    SpringBoot访问jsp页面
    Servlet详解
    Session的生命同期
  • 原文地址:https://www.cnblogs.com/jishu/p/2177627.html
Copyright © 2011-2022 走看看