摘要:聚合管道介紹的聚合管道將文檔在一個(gè)管道處理完畢后將結(jié)果傳遞給下一個(gè)管道處理。它是數(shù)據(jù)聚合的一個(gè)新框架,其概念類似于數(shù)據(jù)處理的管道。
聚合管道aggregate
aggregate介紹
MongoDB的聚合管道將MongoDB文檔在一個(gè)管道處理完畢后將結(jié)果傳遞給下一個(gè)管道處理。管道操作是可以重復(fù)的。管道在Unix和Linux中一般用于將當(dāng)前命令的輸出結(jié)果作為下一個(gè)命令的參數(shù)。
aggregation 它是數(shù)據(jù)聚合的一個(gè)新框架,其概念類似于數(shù)據(jù)處理的管道。 每個(gè)文檔通過一個(gè)由多個(gè)節(jié)點(diǎn)組成的管道,每個(gè)節(jié)點(diǎn)有自己特殊的功能(分組、過濾等),文檔經(jīng)過管道處理后,最后輸出相應(yīng)的結(jié)果。管道基本的功能有兩個(gè):
一是對(duì)文檔進(jìn)行“過濾”,也就是篩選出符合條件的文檔
二是對(duì)文檔進(jìn)行“變換”,也就是改變文檔的輸出形式
其他的一些功能還包括按照某個(gè)指定的字段分組和排序等。而且在每個(gè)階段還可以使用表達(dá)式操作符計(jì)算平均值和拼接字符串等相關(guān)操作。管道提供了一個(gè)MapReduce 的替代方案,MapReduce使用相對(duì)來說比較復(fù)雜,而管道的擁有固定的接口(操作符表達(dá)),使用比較簡單,對(duì)于大多數(shù)的聚合任務(wù)管道一般來說是首選方法。
管道操作符介紹
$project:包含、排除、重命名和顯示字段
$match:查詢,需要同find()一樣的參數(shù)
$limit:限制結(jié)果數(shù)量
$skip:忽略結(jié)果的數(shù)量
$sort:按照給定的字段排序結(jié)果
$group:按照給定表達(dá)式組合結(jié)果
$unwind:分割嵌入數(shù)組到自己頂層文件
$geoNear:返回基于接近地理空間點(diǎn)的有序的文檔流
組聚合操作符介紹
$addToSet:返回在該組中的每個(gè)文檔所選擇的字段的所有唯一值的數(shù)組
$first:返回組中的第一個(gè)值
$last:返回組中的最后一個(gè)值
$max:返回組中的最大值
$min:返回組中的最小值
$avg:返回組中的平均值
$push:返回在該組中的每個(gè)文檔所選擇的字段的所有值的數(shù)組
$sum:返回組中的匯總值
#使用管道可以將多種不同的聚合統(tǒng)計(jì)記錄同時(shí)返回
db.person.aggregate([{$group:{
_id:"$name", count:{$sum:1}, total:{$sum:"$age"}, max:{$max:"$age"}, min:{$min:"$age"}, avg:{$avg:"$age"} }}])
{ "_id" : "jason", "count" : 2, "total" : 58, "max" : 30, "min" : 28, "avg" : 29}
{ "_id" : "lorraine", "count" : 2, "total" : 47, "max" : 25, "min" : 22, "avg" :23.5 }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/19376.html
摘要:小結(jié)是聚合管道查詢使用的方法,參數(shù)是數(shù)組,每個(gè)數(shù)組元素就是一個(gè),中運(yùn)用操作符對(duì)數(shù)據(jù)進(jìn)行處理后再交由下一個(gè),直到?jīng)]有下個(gè),就輸出最終的結(jié)果,而數(shù)據(jù)的處理則是通過使用操作符,本文先簡單介紹了一下有哪些常用的操作符,下一篇再詳細(xì)說明。 前言:一般查詢可以通過find方法,但如果是比較復(fù)雜的查詢或者數(shù)據(jù)統(tǒng)計(jì)的話,find可能就無能為力了,這時(shí)也許你需要的是aggregate. 什么是聚合管道(...
摘要:將返回結(jié)果限制為前個(gè)。所以,聚合的結(jié)果必須要限制在以內(nèi)支持的最大響應(yīng)消息大小。包含字段和排除字段的規(guī)則與常規(guī)查詢中的語法一致。改變字符大小寫的操作,只保證對(duì)羅馬字符有效。只對(duì)羅馬字符組成的字符串有效。 上一篇文章:MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲(chǔ)文件下一篇文章:MongoDB指南---17、MapReduce 如果你有數(shù)據(jù)存儲(chǔ)在Mon...
摘要:將返回結(jié)果限制為前個(gè)。所以,聚合的結(jié)果必須要限制在以內(nèi)支持的最大響應(yīng)消息大小。包含字段和排除字段的規(guī)則與常規(guī)查詢中的語法一致。改變字符大小寫的操作,只保證對(duì)羅馬字符有效。只對(duì)羅馬字符組成的字符串有效。 上一篇文章:MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲(chǔ)文件下一篇文章:MongoDB指南---17、MapReduce 如果你有數(shù)據(jù)存儲(chǔ)在Mon...
摘要:當(dāng)在中使用時(shí),累加器是針對(duì)每個(gè)分組使用的當(dāng)在中使用時(shí),累加器則是針對(duì)每個(gè)字面量起作用,具體用法下一篇文章闡述。另外再加以配合表達(dá)式操作符組成的表達(dá)式或者在或中使用累加器能查詢統(tǒng)計(jì)的內(nèi)容會(huì)更加的多樣化。 上篇最后說到管道操作符,本篇文章將詳細(xì)說一下管道操作符。 mongoDB查詢進(jìn)階--聚合管道(一)回顧 什么是管道操作符(Aggregation Pipeline Operators) ...
摘要:當(dāng)在中使用時(shí),累加器是針對(duì)每個(gè)分組使用的當(dāng)在中使用時(shí),累加器則是針對(duì)每個(gè)字面量起作用,具體用法下一篇文章闡述。另外再加以配合表達(dá)式操作符組成的表達(dá)式或者在或中使用累加器能查詢統(tǒng)計(jì)的內(nèi)容會(huì)更加的多樣化。 上篇最后說到管道操作符,本篇文章將詳細(xì)說一下管道操作符。 mongoDB查詢進(jìn)階--聚合管道(一)回顧 什么是管道操作符(Aggregation Pipeline Operators) ...
閱讀 1346·2021-11-25 09:43
閱讀 1904·2021-11-12 10:36
閱讀 6019·2021-09-22 15:05
閱讀 3488·2019-08-30 15:55
閱讀 2017·2019-08-26 14:06
閱讀 3648·2019-08-26 12:17
閱讀 507·2019-08-23 17:55
閱讀 2459·2019-08-23 16:23