//创建索引
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同上