亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于mongoDB的聚合操作_aggregate()歸納詳解

 更新時(shí)間:2023年07月07日 10:40:01   作者:侯小啾  
這篇文章主要介紹了關(guān)于mongoDB的聚合操作_aggregate()歸納詳解,關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系,聚合是整體和個(gè)體之間的關(guān)系,聚合關(guān)系也是通過實(shí)例變量實(shí)現(xiàn)的。在聚合關(guān)系中,兩個(gè)類是處在不平等層次上的,一個(gè)代表整體,另一個(gè)代表部分,需要的朋友可以參考下

mongoDB聚合操作

mongoDB聚合常用的管道有

  • $match: 過濾管道過濾數(shù)據(jù),只輸出符合條件的文檔
  • $group: 將集合中的文檔分組,可用于統(tǒng)計(jì)結(jié)果
  • $project 映射管道,映射輸出
  • $sort: 排序管道,將輸入文檔排序后輸出
  • $limit: 限制管道,限制聚合管道返回的文檔書
  • $skip: 跳過管道,跳過指定數(shù)量的文檔,并返回余下的文檔

1.準(zhǔn)備一組數(shù)據(jù)

db.data.insertMany([{name:"Tom", city:"cityA",type:"aaa",num:609,age:18},
{name : "allen", city :"cityC", type: "bbb", num : 549,age:20},
{name :"jerry", city :"cityA", type :"bbb", num : 593,age:22},
{name :"frank", city : "cityB", type:"aaa", num : 657,age:21},
{name :"jack", city : "cityC", type:"aaa", num : 620,age:18},
{name :"alice", city : "cityB", type:"ccc", num : 584,age:20},
{name :"marry", city:"cityA", type:"bbb", num : 599,age:22}
])
db.data.find()

在這里插入圖片描述

2.$group 分組管道

2.1 統(tǒng)計(jì)單組

對(duì)city分組,并求每組num的平均值。

db.data.aggregate({$group:{_id:'$city',avg_num:{$avg:'$num'}}})

在這里插入圖片描述

2.2 統(tǒng)計(jì)多組

db.data.aggregate({$group:{_id:'$city',avg_num:{$avg:'$num'},avg_age:{$avg:'$age'}}})

在這里插入圖片描述

3.$match 過濾管道

可以將其作用結(jié)果傳給后一個(gè)管道。

對(duì)city不是"cityC"的city分組(過濾掉“”cityC"),并求每組num的平均值。

db.data.aggregate({$match:{city:{$ne:"cityC"}}},{$group:{_id:'$city',avg_num:{$avg:'$num'}}})

在這里插入圖片描述

對(duì)age≥20的city分組(過濾掉“”cityC"),并求每組num的平均值。

db.data.aggregate({$match:{age:{$gte:20}}},{$group:{_id:'$city',avg_num:{$avg:'$num'}}})

在這里插入圖片描述

其中,

  • _id是分組的依據(jù)

  • avg_num是新定義的字段名

  • $avg 是求值方法的表達(dá)式,這里是求平均值的表達(dá)式

  • ‘$city’ 指定的分組依據(jù)

  • ‘$num’ 指定的要求值的字段

拓展 統(tǒng)計(jì)數(shù)據(jù)個(gè)數(shù)

如果要統(tǒng)計(jì)每組數(shù)據(jù)的個(gè)數(shù),則可以使用 $sum 實(shí)現(xiàn)。

$sum的功能是求某字段的和,用$sum計(jì)數(shù)時(shí),如統(tǒng)計(jì)每個(gè)city的人數(shù),可以寫成:

db.data.aggregate({$group:{_id:'$city',count:{$sum:1}}})

在這里插入圖片描述

即對(duì)字段,常數(shù)1進(jìn)行計(jì)數(shù)。如果寫為{$sum:2},則計(jì)數(shù)結(jié)果為4,4,6。

4.$project 映射管道

db.data.aggregate({$group:{_id:'$city',avg_num:{$avg:'$num'},avg_age:{$avg:'$age'}}},{$project:{avg_num:1}})

在這里插入圖片描述

如圖,結(jié)果不再顯示avg_age,只顯示了_id和avg_num。

5.$sort $skip $limit

按年齡降序排列,跳過第一條,取前三條數(shù)據(jù)

db.data.aggregate({$sort:{age:-1}},{$skip:1},{$limit:3})

在這里插入圖片描述

按年齡降序排列,取前三條數(shù)據(jù),跳過第一條,

db.data.aggregate({$sort:{age:-1}},{$limit:3},{$skip:1})

在這里插入圖片描述

取前三個(gè)數(shù)據(jù),跳過第一個(gè),再降序排列

db.data.aggregate({$limit:3},{$skip:1},{$sort:{age:-1}})

在這里插入圖片描述

管道的寫法不用考慮優(yōu)先級(jí)的問題,從左到右依次執(zhí)行。

6.常用表達(dá)式補(bǔ)充

$sum: 計(jì)算總和, $sum:1 表示以?倍計(jì)數(shù)
$avg: 計(jì)算平均值
$min: 獲取最?值
$max: 獲取最?值
$push: 在結(jié)果?檔中插?值到?個(gè)數(shù)組中
$first: 根據(jù)資源?檔的排序獲取第?個(gè)?檔數(shù)據(jù)
$last: 根據(jù)資源?檔的排序獲取最后?個(gè)?檔數(shù)據(jù)

到此這篇關(guān)于關(guān)于mongoDB的聚合操作_aggregate()歸納詳解的文章就介紹到這了,更多相關(guān)mongoDB的聚合操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MongoDB聚合運(yùn)算符$toBool詳解

    MongoDB聚合運(yùn)算符$toBool詳解

    $toBool聚合運(yùn)算符將指定的值轉(zhuǎn)換為布爾類型boolean,這篇文章主要介紹了MongoDB聚合運(yùn)算符:$toBool的相關(guān)知識(shí),需要的朋友可以參考下
    2024-05-05
  • MongoDB基礎(chǔ)之集合操作

    MongoDB基礎(chǔ)之集合操作

    這篇文章介紹了MongoDB基礎(chǔ)之集合操作,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • MongoDB 用戶相關(guān)操作

    MongoDB 用戶相關(guān)操作

    這篇文章主要介紹了MongoDB 用戶相關(guān)操作,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • MongoDB教程之基本管理命令

    MongoDB教程之基本管理命令

    這篇文章主要介紹了MongoDB教程之基本管理命令,本文講解了啟動(dòng)和停止MongoDB、服務(wù)器狀態(tài)監(jiān)控兩部份內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • MongoDB入門教程之索引操作淺析

    MongoDB入門教程之索引操作淺析

    這篇文章主要介紹了MongoDB入門教程之索引操作淺析,本文講解了建立索引、唯一索引、組合索引、刪除索引等內(nèi)容,需要的朋友可以參考下
    2014-08-08
  • MongoDB分頁查詢緩慢怎么辦

    MongoDB分頁查詢緩慢怎么辦

    在大數(shù)據(jù)應(yīng)用中,MongoDB的分頁查詢存在性能問題,特別是數(shù)據(jù)量大時(shí),本文探討了性能下降的原因,并提出了多種優(yōu)化策略,如有效使用索引、基于索引的游標(biāo)分頁、使用聚合框架、減少返回?cái)?shù)據(jù)量、使用緩存機(jī)制等,旨在改善大規(guī)模數(shù)據(jù)場(chǎng)景下的查詢效率
    2024-09-09
  • MongoDB為用戶設(shè)置訪問權(quán)限

    MongoDB為用戶設(shè)置訪問權(quán)限

    MongoDB已經(jīng)使用很長(zhǎng)一段時(shí)間了,基于MongoDB的數(shù)據(jù)存儲(chǔ)也一直沒有使用到權(quán)限訪問 MongoDB默認(rèn)設(shè)置為無權(quán)限訪問限制
    2012-11-11
  • MongoDB與MySQL的操作對(duì)比表及區(qū)別介紹

    MongoDB與MySQL的操作對(duì)比表及區(qū)別介紹

    這篇文章主要介紹了MongoDB與MySQL的操作對(duì)比表及區(qū)別介紹,本文著重講解了Mongodb與Mysql的操作命令的對(duì)比,需要的朋友可以參考下
    2015-05-05
  • 基于?MongoTemplate實(shí)現(xiàn)MongoDB的復(fù)雜查詢功能

    基于?MongoTemplate實(shí)現(xiàn)MongoDB的復(fù)雜查詢功能

    本文介紹了如何使用MongoTemplate進(jìn)行復(fù)雜的MongoDB查詢,展示了如何進(jìn)行分頁和排序查詢,通過示例代碼,展示了如何處理不同類型的查詢,如單條件查詢、模糊查詢、組合條件查詢以及分頁排序查詢,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • mongodb 隨機(jī)獲取一條記錄的方法

    mongodb 隨機(jī)獲取一條記錄的方法

    這篇文章主要介紹了 mongodb 隨機(jī)獲取一條記錄的方法的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評(píng)論