设为首页 收藏本站
查看: 1614|回复: 0

[经验分享] mongodb Aggregation Framework 简单记录

[复制链接]

尚未签到

发表于 2015-7-10 10:37:02 | 显示全部楼层 |阅读模式
  Aggregation Framework参数解析如下:
  $match:
过滤数据通过设置一个条件将数据进行筛选过滤
db.runCommand({ aggregate : "article", pipeline : [{ $match : { author : "dave" } }]});
$match只是pipeline中的一环,它筛选的结果数据可以再进行下一级的统计操作。
$project:
命令用于设定数据的筛选字段,就像我们SQL中select需要的字段一样。
db.runCommand({ aggregate : "article", pipeline : [{ $match : { author : "dave" } },{ $project : { _id : 0,author : 1,tags : 1}}]});
===db.article.find({ author : "dave" }, { _id : 0, author : 1, tags : 1);
上面就是将所有author为dave的记录的author和tags两个字段取出来。(_id:0 表示去掉默认会返回的_id字段).
  $unwind:因为意思是松开、解开、展开,他可以将某一个为array类型字段的数据拆分成多条,每一条包含array中的一个属性。
db.article.save( {
    title : "this is your title" ,
    author : "dave" ,
    posted : new Date(4121381470000) ,
    pageViews : 7 ,
    tags : [ "fun" , "nasty" ] ,
    comments : [
        { author :"barbara" , text : "this is interesting" } ,
        { author :"jenny" , text : "i like to play pinball", votes: 10 }
    ],
    other : { bar : 14 }
});
  这里面tags字段就是一个array。下面我们在这个字段上应用$unwind操作
db.runCommand({ aggregate : "article", pipeline : [{ $unwind : "$tags" ]});
  $group:
功能就是按某一个key将key值相同的多条数据组织成一条.
db.article.save( {
    title : "this is some other title" ,
    author : "jane" ,
    posted : new Date(978239834000) ,
    pageViews : 6 ,
    tags : [ "nasty" , "filthy" ] ,
    comments : [
        { author :"will" , text : "i don't like the color" } ,
        { author :"jenny" , text : "can i get that in green?" }
    ],
    other : { bar : 14 }
});
我们可以先用上面的$unwind按tags将记录拆成多条,然后再将记录按tags字段重新组织,将同一个tag对应的所有author放在一个array中
db.runCommand({ aggregate : "article", pipeline : [
    { $unwind : "$tags" },
    { $group : {
_id : "$tags",
        count : { $sum : 1 },
authors : { $addToSet : "$author" }
    }}
]});
  db.runCommand({ aggregate : "gc_postsfield", pipeline : [
    { $match : {cate1:1121} },
    { $group : {
_id : "$cate1",
        count : { $sum : 1 },
    }}
]});
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85148-1-1.html 上篇帖子: 转VS2010 C++下编译调试MongoDB源码 代震军 下篇帖子: Notes for these past days: Python, Android, MongoDb, and WebLoad.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表