Mongo 分組聚合查詢

1 單一分組

分組后不會(huì)展示其他字段, _id為固定寫法,userid為分組字段

# 比如對(duì)比sql:select userid from test group by userid
db.test.aggregate({"$group":{"_id":"$userid"}} )
2 多字段分組

_id為固定寫法吹艇,userid與articleid為分組字段惰蜜,多字段時(shí)需要設(shè)置一個(gè)別名

# 比如對(duì)比sql:select userid,articleid from test group by userid,articleid
db.test.aggregate({"$group":{"_id":{"userid":"$userid","articleid":"$articleid"}}})
3 條件匹配分組

$match表示匹配條件,在group前表示where受神,在后表示having抛猖,userid為分組字段

# 比如對(duì)比sql:select userid from test where userid in("1","2")  group by userid
db.test.aggregate(
    {"$match":{"userid":{"$in":["1","2"]}}},
    {"$group":{"_id":"$userid"}}
)
或者
# 比如對(duì)比sql:select userid,articleid from test where userid in("1","2")  group by userid
db.test.aggregate(
    {"$match":{"userid":{"$in":["1","2"]}}},
    {"$group":{"_id":{"userid":"$userid","articleid":"$articleid"}}}
)
或者h(yuǎn)aving聚合查詢
# 比如:select userid,avg(price) as avg from test where userid >'10' group by userid having avg>35
db.test.aggregate(
    {"$match":{"userid":{"$gt":"10"}}},
    {"$group":{"_id":"$userid",'avg':{"$avg":"$price"}}},
    {"$match":{"avg":{"$gt":35}}}
)
4 分組分頁(yè)排序

限制:limit、跳過:skip

db.test.aggregate(
        {"$group":{"_id":"$userid"}},
        {"$skip":1},
        {"$limit":2}
    )
5 聚合分組

聚合分組,分為:sum鼻听、avg财著、max、min撑碴、first撑教、last,聚合結(jié)果需要使用別名醉拓,并且可以結(jié)合條件和排序等元素

5.1 sum聚合-求數(shù)值總和

求某個(gè)數(shù)值總和伟姐,userid分組字段[可以用于多字段聚合],{"sum":price}表示求price合計(jì)

db.test.aggregate({"$group":{"_id":"$userid","total":{"$sum":"$price"}}})
5.2 sum聚合-求分組后數(shù)量
db.test.aggregate({"$group":{"_id":"$userid","total":{"$sum":1}}})
5.3 avg、max亿卤、min聚合

avg愤兵、max、min可以分開使用排吴,也可以一起使用

db.test.aggregate({"$group":{"_id":"$userid","avg":{"$avg":"$price"},"max":{"$max":"$price"},"min":{"$min":"$price"}}})
5.4 復(fù)合聚合

可以多字段聚合求值秆乳,通過sum與avg、max钻哩、min進(jìn)行組合

db.test.aggregate({"$group":{"_id":"$userid"
    ,"total":{"$sum":"$price"}
    ,"avg":{"$avg":"$price"}}})
5.5 聚合分組排序

對(duì)聚合結(jié)果進(jìn)行排序屹堰,$sort-排序,avg-聚合結(jié)果的別名憋槐,1:升序双藕,-1:降序

# 先按userid降序,再avg升序
    db.test.aggregate({"$group":{"_id":"$userid"
    ,"avg":{"$avg":"$price"}}}
    ,{"$sort":{"avg":1}}
    ,{"$sort":{"_id":-1}})
5.6 首尾取值聚合

first-第一個(gè)元素、last-最后一個(gè)元素

vdb.test.aggregate({"$group":{"_id":"$userid","prices":{"$first":"$price"}}})
5.7 聚合分組拼接

等同于group_concat阳仔,push-元素可重復(fù),addToSet-元素不可重復(fù),將分組后的數(shù)據(jù)拼接為一個(gè)數(shù)組

db.test.aggregate({"$group":{"_id":"$userid","names":{"$push":"$price"}}})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末近范,一起剝皮案震驚了整個(gè)濱河市嘶摊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌评矩,老刑警劉巖叶堆,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異斥杜,居然都是意外死亡虱颗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門蔗喂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)忘渔,“玉大人,你說我怎么就攤上這事缰儿∑枇福” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵乖阵,是天一觀的道長(zhǎng)宣赔。 經(jīng)常有香客問我,道長(zhǎng)瞪浸,這世上最難降的妖魔是什么儒将? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮对蒲,結(jié)果婚禮上椅棺,老公的妹妹穿的比我還像新娘。我一直安慰自己齐蔽,他們只是感情好两疚,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著含滴,像睡著了一般诱渤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谈况,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天勺美,我揣著相機(jī)與錄音,去河邊找鬼碑韵。 笑死赡茸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祝闻。 我是一名探鬼主播占卧,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了华蜒?” 一聲冷哼從身側(cè)響起辙纬,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叭喜,沒想到半個(gè)月后贺拣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捂蕴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年譬涡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啥辨。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涡匀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出委可,到底是詐尸還是另有隱情渊跋,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布着倾,位于F島的核電站拾酝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏卡者。R本人自食惡果不足惜蒿囤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望崇决。 院中可真熱鬧材诽,春花似錦、人聲如沸恒傻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盈厘。三九已至睁枕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沸手,已是汗流浹背外遇。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留契吉,地道東北人跳仿。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捐晶,于是被迫代替她去往敵國(guó)和親菲语。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妄辩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容