nosql mongodb 学习-----第三天 高级操作之聚合函数、游标、去重复及分组

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"})

 

 

注:明天继续对聚合函数进行学习,请大家提出我漏掉的部分

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值