最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB分組查詢、聚合查詢實(shí)例

 更新時(shí)間:2026年03月02日 09:50:27   作者:一恍過去  
文章介紹了在MongoDB中使用分組查詢和聚合查詢進(jìn)行數(shù)據(jù)處理的方法,包括單一字段分組、多字段分組、條件匹配分組、分組分頁排序、聚合分組等操作,并提供了具體的示例代碼

前言

在MongoDB中,可以使用分組查詢(Group by)和聚合查詢(Aggregation)來進(jìn)行數(shù)據(jù)的分組和聚合操作。

聚合查詢的靈活性使您能夠根據(jù)需求對數(shù)據(jù)進(jìn)行復(fù)雜的轉(zhuǎn)換和分析,例如計(jì)算平均值、求和、最大值、最小值等。您可以根據(jù)具體的業(yè)務(wù)需求和查詢要求,組合不同的聚合階段來完成復(fù)雜的數(shù)據(jù)處理操作。

分組查詢(Group by):

分組查詢允許您根據(jù)指定的字段將文檔分組并計(jì)算各個(gè)組的統(tǒng)計(jì)信息。

聚合查詢(Aggregation):

聚合查詢提供了更強(qiáng)大和靈活的聚合操作,可以通過多個(gè)階段(Stage)來對數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)換

1、單一字段分組

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

# 比如對比sql:select userid from testgroup by userid
db.test.aggregate({"$group":{"_id":"$userid"}} )

效果:

2、多字段分組

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

# 比如對比sql:select userid,articleid from testgroup by userid,articleid
db.test.aggregate({"$group":{"_id":{"userid":"$userid","articleid":"$articleid"}}})

效果:

3、條件匹配分組

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

# 比如對比sql:select userid from testwhere userid in("1","2")  group by userid
db.test.aggregate(
    {"$match":{"userid":{"$in":["1","2"]}}},
    {"$group":{"_id":"$userid"}}
)
或者
# 比如對比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、分組分頁排序

限制:$limit、跳過:$skip

db.test.aggregate(
        {"$group":{"_id":"$userid"}},
        {"$skip":1},
        {"$limit":2}
	)

5、聚合分組

聚合分組,分為:$sum、$avg、$max、$min、$first、$last,聚合結(jié)果需要使用別名,并且可以結(jié)合條件和排序等元素

為了測試聚合,增加一下文件:

    db.test.insert([{
        "articleid":"1",
        "price":200,
        "userid":"5"
    },{
        "articleid":"2",
        "price":300,
        "userid":"5"
    },{
        "articleid":"3",
        "price":400,
        "userid":"5"
    },{
        "articleid":"1",
        "price":200,
        "userid":"6"
    },{
        "articleid":"2",
        "price":300,
        "userid":"7"
    }]);

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ù)合聚合

可以多字段聚合求值,通過sumavg、max、min進(jìn)行組合

db.test.aggregate({"$group":{"_id":"$userid"
	,"total":{"$sum":"$price"}
	,"avg":{"$avg":"$price"}}})

效果:

5.5、聚合分組排序

對聚合結(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"}}})

效果:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MongoDB系列教程(六):java操作mongodb實(shí)例

    MongoDB系列教程(六):java操作mongodb實(shí)例

    這篇文章主要介紹了MongoDB系列教程(六):java操作mongodb實(shí)例,本文講解了java中操作mongodb數(shù)據(jù)增加、刪除、修改、查詢數(shù)據(jù)等代碼實(shí)例,需要的朋友可以參考下
    2015-05-05
  • 在MongoDB中實(shí)現(xiàn)時(shí)間范圍查詢的代碼詳解

    在MongoDB中實(shí)現(xiàn)時(shí)間范圍查詢的代碼詳解

    MongoDB作為一個(gè)高性能、開源、無模式的文檔型數(shù)據(jù)庫,廣泛應(yīng)用于各種需要靈活數(shù)據(jù)模型的應(yīng)用場景中,在處理與時(shí)間相關(guān)的數(shù)據(jù)時(shí),MongoDB提供了強(qiáng)大的查詢能力,本文將詳細(xì)介紹如何在MongoDB中執(zhí)行時(shí)間范圍查詢,需要的朋友可以參考下
    2024-08-08
  • Linux安裝MongoDB?4.0.3詳細(xì)步驟

    Linux安裝MongoDB?4.0.3詳細(xì)步驟

    這篇文章主要介紹了Linux安裝MongoDB?4.0.3詳細(xì)步驟的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • MongoDB使用索引優(yōu)化查詢的方法

    MongoDB使用索引優(yōu)化查詢的方法

    在MongoDB中索引是優(yōu)化查詢性能的關(guān)鍵工具,索引可以顯著減少查詢的掃描范圍,從而提高查詢和排序操作的速度,以下是詳細(xì)的策略和代碼示例,展示如何使用索引優(yōu)化MongoDB的查詢,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • MongoDB對Document(文檔)的插入、刪除及更新

    MongoDB對Document(文檔)的插入、刪除及更新

    這篇文章介紹了MongoDB對Document(文檔)的插入、刪除及更新,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Mongodb常見錯(cuò)誤與解決方法小結(jié)(Mongodb中經(jīng)常出現(xiàn)的錯(cuò)誤)

    Mongodb常見錯(cuò)誤與解決方法小結(jié)(Mongodb中經(jīng)常出現(xiàn)的錯(cuò)誤)

    這篇文章主要介紹了Mongodb常見錯(cuò)誤與解決方法小結(jié)(Mongodb中經(jīng)常出現(xiàn)的錯(cuò)誤),需要的朋友可以參考下
    2017-03-03
  • MongoDB 簡單入門教程(安裝、基本概念、創(chuàng)建用戶)

    MongoDB 簡單入門教程(安裝、基本概念、創(chuàng)建用戶)

    這篇文章主要介紹了MongoDB 簡單入門教程(安裝、基本概念、創(chuàng)建用戶)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • SqlServer與MongoDB結(jié)合使用NHibernate

    SqlServer與MongoDB結(jié)合使用NHibernate

    這篇文章主要為大家詳細(xì)介紹了SqlServer與MongoDB結(jié)合使用NHibernate的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • MongoDB索引的用法介紹

    MongoDB索引的用法介紹

    這篇文章介紹了MongoDB索引的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • MongoDB的安裝啟動(dòng)及做成windows服務(wù)的教程圖解

    MongoDB的安裝啟動(dòng)及做成windows服務(wù)的教程圖解

    這篇文章主要介紹了MongoDB的安裝啟動(dòng)及做成windows服務(wù)的教程圖解,非常不錯(cuò),具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05

最新評論

曲阳县| 武汉市| 延川县| 运城市| 梁河县| 银川市| 泾川县| 龙南县| 晋中市| 耿马| 柯坪县| 聊城市| 建始县| 京山县| 施甸县| 祥云县| 巫溪县| 鸡泽县| 六枝特区| 卢湾区| 富蕴县| 福泉市| 南雄市| 龙泉市| 南华县| 东安县| 静乐县| 龙山县| 包头市| 包头市| 蒙山县| 界首市| 孟村| 卫辉市| 陕西省| 舞阳县| 连江县| 阳原县| 琼中| 海安县| 南华县|