mogoDB 索引及聚合

//创建索引
db.web.ensureIndex({"id":1,"age":-1})  //为id添加索引 id为升序 age为降序

//自定义索引名称
db.web.ensureIndex({"id":1},{"name":"idIndex"})

//唯一索引
db.web.ensureIndex({"id":1},{"unique":true})  //创建唯一后插入重复会报错,但不会管已经有重复的

db.web.ensureIndex({"id":1},{"unique":true,"dropDups":true})  //强行删除已经存在的重复的(不推荐)

//修改索引时指定后台运行 不影响前台正常使用
db.web.ensureIndex({"name":1},{"backgroud":true})
//聚合

db.web.count()   //返回文档数量
db.web.count({"x":1})  //返回x为1的文档的数量

//找到不同的键值
db.runCommand({"disctinct":"web","key":"age"}) //找出web集合下age不同的值
//group  分组 详细例子

db.web.drop();
db.web.insert({"id":1,"age":10,"name":"L1"});
db.web.insert({"id":1,"age":11,"name":"L2"});
db.web.insert({"id":2,"age":10,"name":"L3"});
db.web.insert({"id":2,"age":12,"name":"L4"});
db.web.insert({"id":2,"age":14,"name":"L5"});
db.web.insert({"id":3,"age":10,"name":"L6"});
db.web.insert({"id":4,"age":11,"name":"L7"});

db.runCommand({"group":
        {
              "ns":"web",          // 所要使用的集合
              "key":"id",            // 分组所依赖的键值(根据id分组)
              "$reduce":function(doc,prev){
                     if(prev.age<doc.age)
                     {
                            prev.name=doc.name;
                            prev.age=doc.age;
                      }  
            }
        } 
    
})             //得到每组年纪最大的文档                    

 

// finalize 每组结果返回时会调用,可以用此函数修剪返回值
// 不是太明白,具体使用后再行补充
// mapreduce同上

  

posted @ 2015-09-09 13:59  麻木鲁克  Views(184)  Comments(0)    收藏  举报