1、去除重复distinct
distinct age获取返回值
db.user.distinct("age")
去除重新记录 并且查看使用索引情况
db.runCommand({"distinct" : "users", "key" : "name"})
2、分组group
通过age查看name
db.user.group({
"key":{"age":true},
"initial":{"user":[]},
"$reduce":function(cur,prev){
prev.user.push(cur.name)
}
})
分组待条件
db.user.group({
"key":{"age":true},
"initial":{"person":[]},
"$reduce":function(doc,out){
out.person.push(doc.name);
},
"finalize":function(out){
out.count = out.person.length;
},
"condition":{"age":{$gt:2}}
})
注:进行分组的key对应value值需要是相同类型的,否则将不会返回结果
3、mapReduce分组
db.user.insert({"name":"hxc","age":20})
db.user.insert({"name":"hxc","age":30})
db.user.insert({"name":"xx","age":40})
db.user.insert({"name":"aaa","age":50})
db.user.insert({"name":"bbb","age":50})
映射函数,集合安装指定的key进行分组
map=function(){
emit(this.name,{count:1});
}
简化函数
key为map中key,value为map中已经分组的集合
reduce=function(key,value){
var result = {count:0};
for(var i=0;i<value.length;i++){
result.count += value[i].count;
}
return result;
}
执行函数 返回结果到集合collection中
db.user.mapReduce(map,reduce,{"out":"collection"})
4、游标
var list=db.user.find();
list.forEach(function(x){
print(x.name)
})
注:对第二天的内容进行补充部分
单条件查询更新
db.user.update({_id:ObjectId("5258180d25a1de6a7d27ef7a")},{"name":"jsonk"})
db.user.update({"uid":"123"},{"age":"20"})
多条件查询更新
db.user.update({"uid":"123","name":"奖金"},{"age":"30"})
db.user.update({"uid":"123","name":"王静"},{"age":"40","addr":"江西"})
in方式删除
db.user.remove({"name":{"$in":["jack","very"]}})
db.user.remove({"age":"20"})
注:明天继续对聚合函数进行学习,请大家提出我漏掉的部分