亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 數(shù)據(jù)庫(kù) > MongoDB > 正文

MongoDB聚合有什么用處?如何使用?

2024-09-07 00:22:27
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
      這篇文章主要給大家分享MongoDB聚合的用處以及操作,小編覺(jué)得是比較挺實(shí)用的,因此分享給大家做個(gè)參考,感興趣的朋友就繼續(xù)往下看吧。
 
       MongoDB 聚合
       MongoDB中聚合(aggregate)主要用于處理數(shù)據(jù)(諸如統(tǒng)計(jì)平均值,求和等),并返回計(jì)算后的數(shù)據(jù)結(jié)果。有點(diǎn)類似sql語(yǔ)句中的 count(*)。
 
       基本語(yǔ)法為:db.collection.aggregate( [ <stage1>, <stage2>, ... ] )
 
       現(xiàn)在在mycol集合中有以下數(shù)據(jù):
 
{ "_id" : 1, "name" : "tom", "sex" : "男", "score" : 100, "age" : 34 }
{ "_id" : 2, "name" : "jeke", "sex" : "男", "score" : 90, "age" : 24 }
{ "_id" : 3, "name" : "kite", "sex" : "女", "score" : 40, "age" : 36 }
{ "_id" : 4, "name" : "herry", "sex" : "男", "score" : 90, "age" : 56 }
{ "_id" : 5, "name" : "marry", "sex" : "女", "score" : 70, "age" : 18 }
{ "_id" : 6, "name" : "john", "sex" : "男", "score" : 100, "age" : 31 }
 
       1、$sum計(jì)算總和。
 
  Sql: select sex,count(*) frommycol group by sex
 
  MongoDb: db.mycol.aggregate([{$group: {_id: '$sex', personCount: {$sum: 1}}}])
 
  Sql: select sex,sum(score) totalScore frommycol group by sex
 
  MongoDb: db.mycol.aggregate([{$group: {_id: '$sex', totalScore: {$sum: '$score'}}}])
 
       2、$avg 計(jì)算平均值
 
  Sql: select sex,avg(score) avgScore frommycol group by sex
 
  Mongodb: db.mycol.aggregate([{$group: {_id: '$sex', avgScore: {$avg: '$score'}}}])
 
 
 
       3、$max獲取集合中所有文檔對(duì)應(yīng)值得最大值。
 
  Sql: select sex,max(score) maxScore frommycol group by sex
 
  Mongodb: db.mycol.aggregate([{$group: {_id: '$sex', maxScore: {$max: '$score'}}}])
 
 
 
       4、$min 獲取集合中所有文檔對(duì)應(yīng)值得最小值。
 
  Sql: select sex,min(score) minScore frommycol group by sex
 
  Mongodb: db.mycol.aggregate([{$group: {_id: '$sex', minScore: {$min: '$score'}}}])
 
 
 
       5、$push 把文檔中某一列對(duì)應(yīng)的所有數(shù)據(jù)插入值到一個(gè)數(shù)組中。
 
  Mongodb: db.mycol.aggregate([{$group: {_id: '$sex', scores : {$push: '$score'}}}])
 
 
 
       6、$addToSet把文檔中某一列對(duì)應(yīng)的所有數(shù)據(jù)插入值到一個(gè)數(shù)組中,去掉重復(fù)的
 
  db.mycol.aggregate([{$group: {_id: '$sex', scores : {$addToSet: '$score'}}}])
 
 
 
       7、 $first根據(jù)資源文檔的排序獲取第一個(gè)文檔數(shù)據(jù)。
 
  db.mycol.aggregate([{$group: {_id: '$sex', firstPerson : {$first: '$name'}}}])
 
 
 
       8、 $last根據(jù)資源文檔的排序獲取最后一個(gè)文檔數(shù)據(jù)。
 
  db.mycol.aggregate([{$group: {_id: '$sex', lastPerson : {$last: '$name'}}}])
 
 
 
       9、全部統(tǒng)計(jì)null
 
  db.mycol.aggregate([{$group:{_id:null,totalScore:{$push:'$score'}}}])
 
 
 
       例子
 
  現(xiàn)在在t2集合中有以下數(shù)據(jù):
 
  { "country" : "china", "province" : "sh", "userid" : "a" }
  { "country" : "china", "province" : "sh", "userid" : "b" }
  { "country" : "china", "province" : "sh", "userid" : "a" }
  { "country" : "china", "province" : "sh", "userid" : "c" }
  { "country" : "china", "province" : "bj", "userid" : "da" }
  { "country" : "china", "province" : "bj", "userid" : "fa" }
 
  需求是統(tǒng)計(jì)出每個(gè)country/province下的userid的數(shù)量(同一個(gè)userid只統(tǒng)計(jì)一次)
 
  過(guò)程如下。
 
  首先試著這樣來(lái)統(tǒng)計(jì):
 
  db.t2.aggregate([{$group:{"_id":{"country":"$country","prov":"$province"},"number":{$sum:1}}}])
 
  結(jié)果是錯(cuò)誤的:
 
 
 
  原因是,這樣來(lái)統(tǒng)計(jì)不能區(qū)分userid相同的情況 (上面的數(shù)據(jù)中sh有兩個(gè) userid = a)
 
  為了解決這個(gè)問(wèn)題,首先執(zhí)行一個(gè)group,其id 是 country, province, userid三個(gè)field:
 
  db.t2.aggregate([ { $group: {"_id": { "country" : "$country", "province": "$province" , "uid" : "$userid" } } } ])
 
 
 
  可以看出,這步的目的是把相同的userid只剩下一個(gè)。
 
  然后第二步,再第一步的結(jié)果之上再執(zhí)行統(tǒng)計(jì):
 
  db.t2.aggregate([
  { $group: {"_id": { "country" : "$country", "province": "$province" , "uid" : "$userid" } } } ,
  { $group: {"_id": { "country" : "$_id.country", "province": "$_id.province" }, count : { $sum : 1 } } }
  ])
 
  這回就對(duì)了
 
 
 
  加入一個(gè)$project操作符,把_id去掉
 
  db.t2.aggregate([ { $group: {"_id": { "country" : "$country", "province": "$province" , "uid" : "$userid" } } } ,
  { $group: {"_id": { "country" : "$_id.country", "province": "$_id.province" }, count: { $sum : 1 } } },
  { $project : {"_id": 0, "country" : "$_id.country", "province" : "$_id.province", "count" : 1}}
  ])
 
  最終結(jié)果如下:
 
 
 
       管道的概念
       管道在Unix和Linux中一般用于將當(dāng)前命令的輸出結(jié)果作為下一個(gè)命令的參數(shù)。MongoDB的聚合管道將MongoDB文檔在一個(gè)管道處理完畢后將結(jié)果傳遞給下一個(gè)管道處理。管道操作是可以重復(fù)的。表達(dá)式:處理輸入文檔并輸出。表達(dá)式是無(wú)狀態(tài)的,只能用于計(jì)算當(dāng)前聚合管道的文檔,不能處理其它的文檔。
 
       這里我們介紹一下聚合框架中常用的幾個(gè)操作:
 
$project:修改輸入文檔的結(jié)構(gòu)??梢杂脕?lái)重命名、增加或刪除域,也可以用于創(chuàng)建計(jì)算結(jié)果以及嵌套文檔。
match:用于過(guò)濾數(shù)據(jù),只輸出符合條件的文檔。match使用MongoDB的標(biāo)準(zhǔn)查詢操作。
$limit:用來(lái)限制MongoDB聚合管道返回的文檔數(shù)。
$skip:在聚合管道中跳過(guò)指定數(shù)量的文檔,并返回余下的文檔。
$unwind:將文檔中的某一個(gè)數(shù)組類型字段拆分成多條,每條包含數(shù)組中的一個(gè)值。
$group:將集合中的文檔分組,可用于統(tǒng)計(jì)結(jié)果。
$sort:將輸入文檔排序后輸出。
$geoNear:輸出接近某一地理位置的有序文檔。
       1、$project實(shí)例
 
  db.mycol.aggregate({$project:{name : 1, score : 1}})
 
  這樣的話結(jié)果中就只還有_id,name和score三個(gè)字段了,默認(rèn)情況下_id字段是被包含的,如果要想不包含_id話可以這樣:
 
  db.mycol.aggregate({$project:{_id : 0, name : 1, score : 1}})
 
       2、$match實(shí)例
 
  $match用于獲取分?jǐn)?shù)大于30小于并且小于100的記錄,然后將符合條件的記錄送到下一階段$group管道操作符進(jìn)行處理
 
  db.mycol.aggregate([{$match :{score: {$gt: 30, $lt: 100}}},{$group:{_id:'$sex',count:{$sum:1}}}]) 

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
在线免费av导航| 国产毛片精品| 婷婷激情小说网| 亚洲va中文在线播放免费| 日韩制服一区| 国产精品草莓在线免费观看| 国产激情久久| 欧美男人天堂| 日韩hd视频在线观看| 国产黄色免费网| 国内精品久久久久久| 亚洲网站视频在线观看| 久久香蕉国产线看观看网| 99只有精品| 中文字幕一区二区三区人妻在线视频| 欧美欧美欧美欧美首页| 成年网站在线| 成人免费看aa片| 一区二区三区四区视频精品免费| 露脸国产精品自产在线播| 欧美日韩中文字幕视频| 天堂综合在线播放| 精品国产欧美一区二区| 日韩欧美一级在线播放| 超碰最新在线| 91婷婷韩国欧美一区二区| 天堂成人娱乐在线视频免费播放网站| 精品伦理精品一区| 国产精品第100页| 国产欧美欧洲| 一区二区三区四区视频| 色一情一区二区三区四区| 一级黄色片在线看| 免费在线成人激情电影| 日本中文字幕电影| 韩国97影院| 成年美女黄网站色大片不卡| 色婷婷一区二区三区在线观看| 国产精品永久久久久久久久久| 亚洲综合视频网| 99久久精品免费看国产交换| 网曝91综合精品门事件在线| 国内精品久久久久久中文字幕| 国产精品视频一区二区三区四蜜臂| 九九久久九九| 婷婷中文字幕一区| 日韩 欧美 视频| 全网免费在线播放视频入口| 黄色高清视频| 1024国产精品| 成人精品一区二区三区校园激情| 国产一区二区三区中文字幕| 欧美精品九九| 97免费在线观看视频| 女海盗2成人h版中文字幕| av资源中文在线| 国产精品免费看片| 波多野结衣加勒比| 一本大道伊人av久久综合| 1024在线视频| 国产精品亚洲欧美导航| 久久永久免费| 免费极品av一视觉盛宴| 中文字幕免费高清在线观看| 精品伦理精品一区| 国产麻豆综合视频在线观看| 中文字幕乱码一区二区三区| 久久蜜桃一区二区| 你懂的在线看| 精品国产乱码久久久久夜深人妻| 午夜不卡影院| 国产美女被草| 国产 欧美 自拍| 日本成人福利| 致1999电视剧免费观看策驰影院| 加勒比视频一区| 亚洲精品国产成人| 久久精品国产亚洲blacked| 成年网站免费入口在线观看| 欧美国产一级片| 又大又长粗又爽又黄少妇视频| 91九色视频蝌蚪| 亚洲有码转帖| 国产精彩视频一区二区| 久久这里只精品| 欧美a一欧美| japanese色国产在线看视频| 性xxxx欧美老肥妇牲乱| 午夜精品无码一区二区三区| 日夜操在线视频| 激情小说图片视频| 国产一区二区三区天码| 精品国产国产综合精品| 日本不卡一区在线| 日本不卡不卡| 国产精品久久久免费观看| 欧美老年两性高潮| 不卡一卡2卡3卡4卡精品在| 黄色成人在线免费| 国产97在线播放| 国产一级黄色片免费| 午夜精品一二三区| 国产欧美久久久久久久久| 奇米精品一区二区三区在线观看| 伊人久久久久久久久久久久久久| 青娱乐在线视频免费观看| 香蕉视频网站在线观看| 97久久人国产精品婷婷| 99视频精品视频高清免费| 成人精品一区二区不卡视频| 男人舔女人下面高潮视频| 色婷婷亚洲十月十月色天| 一本久道在线| 国产精品美女视频网站| 国产日韩综合一区二区性色av| 欧美人妻一区二区三区| 欧美一区二区性| 一个人看的www片免费高清视频| 99久久综合色| 97超碰在线免费| 国产三线在线| 免费男女羞羞的视频网站中文版| 精品午夜一区二区三区在线观看| 激情综合丝袜美女一区二区| 俄罗斯xxxx性全过程| 性欧美13一14内谢| 97se亚洲国产综合自在线不卡| 久久天天躁狠狠躁夜夜躁2014| 亚洲精品一区二区三区蜜桃下载| 97在线电影| 国产又黄又粗的视频| 色综合天天综合网国产成人网| 国内精品自线一区二区三区视频| 欧美午夜在线播放| 亚洲电影先锋| 国产aⅴ精品一区二区三区色成熟| 国产精品成人一区二区艾草| 国产福利视频导航| 国产亚洲精品综合一区91| 欧美天堂一区二区| 久久久久久久久久久综合| 特大巨黑人吊性xxx视频| 欧美在线短视频| 国户精品久久久久久久久久久不卡| 一区二区三区四区视频在线观看| 国产人妖乱国产精品人妖| 国产在线观看精品一区二区三区| 久久99精品久久久久久久久久久久| 国产美女在线播放| 国产精品欧美激情在线观看| 伊人久久大香线| 日本一区二区三区在线免费观看| 欧美最顶级a∨艳星| 超碰在线一区二区三区| 男女做暖暖视频| 国产不卡一区二区在线观看| 波多野结衣 在线| 国产在线精品不卡| 青青草手机在线| 免费在线观看视频a| 亚洲欧美日韩一区二区在线| 亚洲大香人伊一本线| 中文字幕观看av| 日本黄色三级视频| 日本超碰在线观看| ass极品国模人体欣赏| av在线私库| 第一站视频久草网| 黄网在线观看网址入口| 国产精品免费一区二区三区都可以| 国产肉丝袜一区二区| 天天色天天上天天操| 中文字幕av一区二区三区高| 美女视频黄频大全不卡视频在线播放| 亚洲精品视频一区二区三区| 7777奇米亚洲综合久久| 国产在线观看一区二区三区| 日日摸日日碰夜夜爽av| 最近日韩中文字幕| 艳色歌舞团一区二区三区| 日韩免费高清| 欧美自拍视频在线| 国产在线天堂www网在线观看| 69堂精品视频| 成人国产精品免费| 精品视频国产| 日韩精品成人在线观看| av中文字幕网| 国产乡下妇女做爰视频| 欧美大尺度激情区在线播放| 国产又色又爽又黄又免费| 五月天国产在线| 99久久婷婷国产精品综合| 久久久人成影片一区二区三区在哪下载| 2222www色视频在线观看| 日韩国产福利| 国产性色一区二区| 国产成人免费视频app| 在线看成人短视频| 最近中文字幕无免费| 国产精品一区二区黑人巨大| 日本视频不卡| 国产小视频在线高清播放| 黄色成人美女网站| xxxxxx在线观看| 337p亚洲精品色噜噜| 影视先锋av资源站| 中文字幕av日韩精品| 久久久噜噜噜久久狠狠50岁| 亚洲美女屁股眼交3| 秋霞国产午夜精品免费视频| 一日本道久久久精品国产| 久久国产88| 亚洲精品xxxx| 天天爽夜夜爽夜夜爽精品| 成人精品视频一区| 日韩—二三区免费观看av| 熟妇人妻久久中文字幕| 你懂的网址一区二区三区| 黄色大片在线观看| 精品午夜久久| 亚洲理论在线观看| 欧美一区综合| 在线免费观看黄色| 国产日韩精品视频一区二区三区| 日韩精品一区二区三区中文精品| 国产激情久久| av动漫免费看| 欧美一区久久| 国产亚洲视频在线| 国产精品电影久久久久电影网| a级在线观看视频| 18+激情视频在线| 亚洲欧美精品午睡沙发| 国产美女被草| 成人免费淫片| gogogo免费视频观看亚洲一| 国产美女在线一区| 国产精品久线观看视频| 久久久一本精品99久久精品66| 一区二区激情小说| 精品全国在线一区二区| 久久国产在线视频| 欧美在线一二三| 国产情侣一区二区三区| 在线观看免费黄色片| 欧美午夜一区| 国内精品小视频| 最新成人av在线| 国产成人精品免费视频网站| 中文字幕中文字幕在线一区| 在线免费观看的av网站| 国产亚洲精久久久久久| 成人av无码一区二区三区| 日韩成人午夜影院| 日韩成人av网| 午夜久久久久久久久久影院| 亚洲人成精品久久久久久| 国精品一区二区| 97久久人人超碰| 国产精品久久久久免费| 国产91精品在线| 久热精品视频在线观看一区| 日本在线视频1区| 日本黄色三级视频| 久久国产精品久久久久久久久久| 日韩经典第一页| 日本天堂在线观看| 欧美视频免费在线| 日韩欧美国产小视频| www.av欧美| 日韩免费av一区二区| 高清无码一区二区在线观看吞精| 国产成人自拍视频在线观看| 欧美国产日产韩国视频| 国产成人一区在线| 91麻豆国产福利在线观看宅福利| 人妻精品无码一区二区| 夜夜春很很躁夜夜躁| 久久久久无码国产精品| 亚洲精品一区二区三区中文字幕| 中文文字幕文字幕高清| 久久国产成人精品国产成人亚洲| 国产精品一区二区免费视频| 亚洲日本成人女熟在线观看| 麻豆精品一二三| 免费看污片的网站| 国产欧美精品国产国产专区| 精品国产一区二区三区久久久蜜臀| 99久久婷婷国产综合精品电影√| 黄色a级片在线观看| 国产美女主播一区| va亚洲va日韩不卡在线观看| 国产精品第56页| 成人精品视频一区二区三区| 白白色 亚洲乱淫| 亚洲欧洲国产综合| 精选一区二区三区四区五区| 自拍偷拍亚洲| 国产一区二区三区影视| 香蕉视频在线看| 国产视频中文字幕| 国产精品视频一区二区三区四区五区| 欧美zozo另类异族| 92国产精品观看| wwwav91| 国产精品久久精品国产| 天堂成人免费av电影一区| 在线观看区一区二| 97人人模人人爽人人喊中文字| 欧美人与拘性视交免费看| 亚洲欧美中文日韩在线v日本| 九色综合国产一区二区三区| 91麻豆精品国产综合久久久| 不卡一区在线观看| 国产精品久久久久9999小说| 91免费观看在线| 日韩毛片中文字幕| 欧美丰满老妇| 第一区第二区在线| 黄色网页在线播放| 九色在线视频观看| 国产无套粉嫩白浆内谢| 亚洲精品亚洲人成人网在线播放| av网页在线观看| 国产日韩欧美电影在线观看| 精品日韩欧美| 99久久人妻无码精品系列|