MongoDB 聚合运算group及map reduce

1.db.collection.group

   arice:PRIMARY> db.t.find(){"_id":ObjectId("51244a9e181fee7a28391f2a"),"hours":"8","ts":ISODate("2012-01-08T16:00:00Z"),"name":"ccj"}{"_id":ObjectId("51244afa181fee7a28391f2b"),"hours":"5","ts":ISODate("2012-01-09T16:00:00Z"),"name":"ccj"}{"_id":ObjectId("51244afa181fee7a28391f2c"),"hours":"3","ts":ISODate("2012-01-10T16:00:00Z"),"name":"ccj"}{"_id":ObjectId("51244afa181fee7a28391f2d"),"hours":"1","ts":ISODate("2012-02-09T16:00:00Z"),"name":"ccj"}{"_id":ObjectId("51244afa181fee7a28391f2e"),"hours":"8","ts":ISODate("2012-01-08T16:00:00Z"),"name":"inosql"}{"_id":ObjectId("51244afa181fee7a28391f2f"),"hours":"4","ts":ISODate("2012-01-09T16:00:00Z"),"name":"inosql"}{"_id":ObjectId("51244afa181fee7a28391f30"),"hours":"3","ts":ISODate("2012-01-10T16:00:00Z"),"name":"inosql"}{"_id":ObjectId("51244afc181fee7a28391f31"),"hours":"2","ts":ISODate("2012-02-09T16:00:00Z"),"name":"inosql"}
    arice:PRIMARY>  db.t.group({...    keyf:function(doc){...var t =newDate(doc.ts);...return{name_ym:doc.name+":"+...                     t.getFullYear()+"-"+(t.getMonth()+1)};...},...    initial:{sum:0},...    reduce:function(doc,agg){agg.sum+=NumberInt(doc.hours);}...});[{"name_ym":"ccj:2012-1","sum":16},{"name_ym":"ccj:2012-2","sum":1},{"name_ym":"inosql:2012-1","sum":15},{"name_ym":"inosql:2012-2","sum":2}]

2.aggregate

match匹配查询条件,group by uuid

db.bindingfailure.aggregate({$match:{"created":{$gte:ISODate("2013-07-20T00: 00: 00.0Z"),$lte:ISODate("2013-07-20T23: 59: 59.0Z")},"platform":"android"}},{$group:{_id:"$uuid",count:{$sum:1}}})...{"_id":"866278011448789-C46AB769C063","count":4},{"_id":"A0000042E687A3-70723cd898e2","count":4},{"_id":"860312026895795-acf7f3e2f423","count":4}],"ok":1}

统计上述uuid count>1的数目

db.bindingfailure.aggregate({$match:{"created":{$gte:ISODate("2013-07-20T00: 00: 00.0Z"),$lte:ISODate("2013-07-20T23: 59: 59.0Z")},"platform":"android"}},{$group:{_id:"$uuid",count:{$sum:1}}},{$match:{count:{$gt:1}}},{$group:{_id:null,count:{$sum:1}}}){"result":[{"_id":null,"count":1223}],"ok":1}

统计上述uuid count=1的数目

 db.bindingfailure.aggregate({$match:{"created":{$gte:ISODate("2013-07-20T00: 00: 00.0Z"),$lte:ISODate("2013-07-20T23: 59: 59.0Z")},"platform":"android"}},{$group:{_id:"$uuid",count:{$sum:1}}},{$match:{count:1}},{$group:{_id:null,count:{$sum:1}}}){"result":[{"_id":null,"count":469}],"ok":1}

转载于:https://www.cnblogs.com/schumi-lds/p/3651390.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值