欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間: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)系,聚合是整體和個體之間的關(guān)系,聚合關(guān)系也是通過實(shí)例變量實(shí)現(xiàn)的。在聚合關(guān)系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分,需要的朋友可以參考下

mongoDB聚合操作

mongoDB聚合常用的管道有

  • $match: 過濾管道過濾數(shù)據(jù),只輸出符合條件的文檔
  • $group: 將集合中的文檔分組,可用于統(tǒng)計結(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)計單組

對city分組,并求每組num的平均值。

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

在這里插入圖片描述

2.2 統(tǒng)計多組

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

在這里插入圖片描述

3.$match 過濾管道

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

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

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

在這里插入圖片描述

對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)計數(shù)據(jù)個數(shù)

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

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

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

在這里插入圖片描述

即對字段,常數(shù)1進(jìn)行計數(shù)。如果寫為{$sum:2},則計數(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})

在這里插入圖片描述

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

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

在這里插入圖片描述

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

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

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

到此這篇關(guān)于關(guān)于mongoDB的聚合操作_aggregate()歸納詳解的文章就介紹到這了,更多相關(guān)mongoDB的聚合操作內(nèi)容請搜索腳本之家以前的文章或繼續(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)知識,需要的朋友可以參考下
    2024-05-05
  • MongoDB基礎(chǔ)之集合操作

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

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

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

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

    MongoDB教程之基本管理命令

    這篇文章主要介紹了MongoDB教程之基本管理命令,本文講解了啟動和停止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ù)量大時,本文探討了性能下降的原因,并提出了多種優(yōu)化策略,如有效使用索引、基于索引的游標(biāo)分頁、使用聚合框架、減少返回數(shù)據(jù)量、使用緩存機(jī)制等,旨在改善大規(guī)模數(shù)據(jù)場景下的查詢效率
    2024-09-09
  • MongoDB為用戶設(shè)置訪問權(quán)限

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

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

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

    這篇文章主要介紹了MongoDB與MySQL的操作對比表及區(qū)別介紹,本文著重講解了Mongodb與Mysql的操作命令的對比,需要的朋友可以參考下
    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

最新評論