日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

4.聚合aggregate

發(fā)布時(shí)間:2024/7/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4.聚合aggregate 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 聚合(aggregate)主要用于計(jì)算數(shù)據(jù),類(lèi)似sql中的sum()、avg()
  • 語(yǔ)法:db.集合名稱(chēng).aggregate({管道:{表達(dá)式}})

管道

  • 管道在Unix和Linux中一般用于將當(dāng)前命令的輸出結(jié)果作為下一個(gè)命令的輸入

ps ajx | grep mongo

  • 常用管道
  • $group:將集合中的文檔分組,可用于統(tǒng)計(jì)結(jié)果
  • $match:過(guò)濾數(shù)據(jù),只輸出符合條件的文檔
  • $project:修改輸入文檔的結(jié)構(gòu),如重命名、增加、刪除字段、創(chuàng)建計(jì)算結(jié)果
  • $sort:將輸入文檔排序后輸出
  • $limit:限制聚合管道返回的文檔數(shù)
  • $skip:跳過(guò)指定數(shù)量的文檔,并返回余下的文檔
  • $unwind:將數(shù)組類(lèi)型的字段進(jìn)行拆分

?

表達(dá)式:處理輸入文檔并輸出

  • 語(yǔ)法:表達(dá)式:'$列名'

常用表達(dá)式

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

?

$group

  • 將集合中的文檔分組,可用于統(tǒng)計(jì)結(jié)果
  • _id表示分組的依據(jù),使用某個(gè)字段的格式為'$字段'
  • 例1:統(tǒng)計(jì)男生、女生的總?cè)藬?shù)

db.stu.aggregate(
??? {$group:
??????? {
??????????? _id:'$gender',
??????????? counter:{$sum:1}
??????? }
??? }
)

Group by null

  • 將集合中所有文檔分為一組
  • 例2:求學(xué)生總?cè)藬?shù)、平均年齡

db.stu.aggregate(
??? {$group:
??????? {
??????????? _id:null,
??????????? counter:{$sum:1},
???????????avgAge:{$avg:'$age'}
??????? }
??? }
)

透視數(shù)據(jù)

  • 例3:統(tǒng)計(jì)學(xué)生性別及學(xué)生姓名

db.stu.aggregate(
??? {$group:
??????? {
??????????? _id:'$gender',
??????????? name:{$push:'$name'}
??????? }
??? }
)

  • 使用$$ROOT可以將文檔內(nèi)容加入到結(jié)果集的數(shù)組中,代碼如下

db.stu.aggregate(
??? {$group:
??????? {
??????????? _id:'$gender',
??????????? name:{$push:'$$ROOT'}
??????? }
??? }
)

?

$match

  • 用于過(guò)濾數(shù)據(jù),只輸出符合條件的文檔
  • 使用MongoDB的標(biāo)準(zhǔn)查詢(xún)操作
  • 例1:查詢(xún)年齡大于20的學(xué)生

db.stu.aggregate(
??? {$match:{age:{$gt:20}}}
)

?

$project

  • 修改輸入文檔的結(jié)構(gòu),如重命名、增加、刪除字段、創(chuàng)建計(jì)算結(jié)果
  • 例1:查詢(xún)學(xué)生的姓名、年齡

db.stu.aggregate(
???{$project:{_id:0,name:1,age:1}}
)

?

$sort

  • 將輸入文檔排序后輸出
  • 例1:查詢(xún)學(xué)生信息,按年齡升序

b.stu.aggregate({$sort:{age:1}})

?

$limit

  • 限制聚合管道返回的文檔數(shù)
  • 例1:查詢(xún)2條學(xué)生信息

db.stu.aggregate({$limit:2})

$skip

  • 跳過(guò)指定數(shù)量的文檔,并返回余下的文檔
  • 例2:查詢(xún)從第3條開(kāi)始的學(xué)生信息

db.stu.aggregate({$skip:2})

  • 例3:統(tǒng)計(jì)男生、女生人數(shù),按人數(shù)升序,取第二條數(shù)據(jù)

db.stu.aggregate(
???{$group:{_id:'$gender',counter:{$sum:1}}},
??? {$sort:{counter:1}},
??? {$skip:1},
??? {$limit:1}
)

  • 注意順序:先寫(xiě)skip,再寫(xiě)limit

?

?

$unwind

  • 將文檔中的某一個(gè)數(shù)組類(lèi)型字段拆分成多條,每條包含數(shù)組中的一個(gè)值

語(yǔ)法1對(duì)某字段值進(jìn)行拆分

db.集合名稱(chēng).aggregate({$unwind:'$字段名稱(chēng)'})

  • 構(gòu)造數(shù)據(jù)

db.t2.insert({_id:1,item:'t-shirt',size:['S','M','L']})

  • 查詢(xún)

db.t2.aggregate({$unwind:'$size'})

語(yǔ)法2對(duì)某字段值進(jìn)行拆分

  • 處理空數(shù)組、非數(shù)組、無(wú)字段、null情況
  • 屬性preserveNullAndEmptyArrays值為false表示丟棄屬性值為空的文檔
  • 屬性preserveNullAndEmptyArrays值為true表示保留屬性值為空的文檔

db.inventory.aggregate({
??? $unwind:{
??????
?path:'$字段名稱(chēng)',
???????preserveNullAndEmptyArrays:<boolean> #
防止數(shù)據(jù)丟失
??? }
})

?

  • 構(gòu)造數(shù)據(jù)

db.t3.insert([
{ "_id" : 1, "item" : "a", "size": ["S", "M", "L"] },
{ "_id" : 2, "item" : "b", "size" : [ ]},
{ "_id" : 3, "item" : "c", "size":"M" },
{ "_id" : 4, "item" : "d" },
{ "_id" : 5, "item" : "e", "size" :null }
])

  • 使用語(yǔ)法1查詢(xún)

db.t3.aggregate({$unwind:'$size'})

  • 查看查詢(xún)結(jié)果,發(fā)現(xiàn)對(duì)于空數(shù)組、無(wú)字段、null的文檔,都被丟棄了
  • 問(wèn):如何能不丟棄呢?
  • 答:使用語(yǔ)法2查詢(xún)

db.t3.aggregate({$unwind:{path:'$size',preserveNullAndEmptyArrays:

true}})

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的4.聚合aggregate的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品欧美一区二区精品久久 | 欧美v日韩 | 人人爱人人草 | 色爱成人综合 | 少妇高潮一区二区三区 | 久久青青草原 | 冲田杏梨在线 | 青青青国产 | 国产成人一区二区三区 | 黄色资源在线播放 | 日日噜噜噜 | 国产调教视频在线观看 | 大地资源影视在线播放观看高清视频 | 国产精品国语 | 久久亚洲AV无码专区成人国产 | 日本在线视频一区 | 亚洲精品亚洲人成人网 | 91日韩欧美| 美女bb视频 | 亚洲免费视频网站 | 国产成人综合久久 | av无码久久久久久不卡网站 | 在线精品自拍 | 亚洲精品无吗 | 免费无码肉片在线观看 | 粗大挺进潘金莲身体在线播放 | 99热这里只有精品1 亚洲人交配视频 | 亚洲精品国产精品乱码不99 | 在线观看免费观看在线 | 亚洲第一av在线 | eeuss鲁片一区二区三区在线观看 | 国产精品久久久久久免费播放 | 激情www| 日韩www.| 国产精品国产三级国产普通话对白 | 亚洲第一页乱 | 欧美片在线观看 | 久久久久久久国产精品毛片 | 一区二区三区在线免费 | 成人区一区二区 | 911亚洲精选| 理论片毛片 | 91国偷自产一区二区三区女王 | 国产美女视频 | 99ri在线观看 | 91高清无打码 | 久久亚洲av永久无码精品 | 99久久久无码国产精品衣服 | 超碰国产在线观看 | 国产欧美日韩成人 | 成av人在线| 日本一区二区视频在线播放 | 成人3d动漫一区二区三区91 | xxxx在线播放 | 桃色视频在线 | 麻豆av网站 | 国产三级按摩推拿按摩 | 综合色av | 午夜av一区二区三区 | 麻豆av一区二区 | 国产乱子伦视频一区二区三区 | 色狠狠av老熟女 | 色偷偷伊人 | 爱草在线| 8050午夜二级 | 欧美浮力影院 | 顶级毛茸茸aaahd极品 | 久久久久99精品成人片 | 精品国产自| 成人av网站在线播放 | 亚洲人成777 | 欧美男女动态图 | 欧美精品一区二区三区四区 | 亚洲成人一级片 | 欧美激情精品久久久久久 | 原来神马电影免费高清完整版动漫 | 一二三区不卡 | 日本黄色一级视频 | 逼逼av网站| 免费三级在线 | 打开免费观看视频在线 | 成人性做爰aaa片免费看不忠 | 久久香蕉精品视频 | 国产精品色哟哟 | 99久久婷婷国产精品综合 | 麻豆av免费在线 | a级黄色小视频 | 日韩综合中文字幕 | av影视在线观看 | 伊人久久中文 | 日本久久片| 亚洲免费在线观看视频 | 国产农村妇女毛片精品 | 久久精品视频久久 | 色老汉视频 | 国自产拍偷拍精品啪啪一区二区 | 午夜一区二区三区免费观看 | 国产乱码精品一区二区三 | 黄色二级视频 |