aggregate() 方法
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
管道
$group:將集合中的文檔分組勤家,可用于統(tǒng)計(jì)結(jié)果胶背。
$project:修改輸入文檔的結(jié)構(gòu)镇饮∪雇纾可以用來(lái)重命名互例、增加或
刪除域欺劳,也可以用于創(chuàng)建計(jì)算結(jié)果以及嵌套文檔。
match使
用MongoDB的標(biāo)準(zhǔn)查詢操作。
$limit:用來(lái)限制MongoDB聚合管道返回的文檔數(shù)罗珍。
$skip:在聚合管道中跳過(guò)指定數(shù)量的文檔洽腺,并返回余下的文
檔。
$unwind:將文檔中的某一個(gè)數(shù)組類(lèi)型字段拆分成多條覆旱,每條
包含數(shù)組中的一個(gè)值蘸朋。
$sort:將輸入文檔排序后輸出。
聚合的表達(dá)式:
-
$sum 計(jì)算總和扣唱。
例:db.mycol.aggregate(
[
{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}
]
)
-
$avg 計(jì)算平均值
db.mycol.aggregate(
[
{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}
]
)
-
$min 獲取集合中所有文檔對(duì)應(yīng)值得最小值藕坯。
db.mycol.aggregate(
[
{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}
]
)
-
$max 獲取集合中所有文檔對(duì)應(yīng)值得最大值。
db.mycol.aggregate(
[
{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}
]
)
-
$push 在結(jié)果文檔中插入值到一個(gè)數(shù)組中画舌。
db.mycol.aggregate(
[
{$group : {_id : "$by_user", url : {$push: "$url"}}}
]
)
-
$first 根據(jù)資源文檔的排序獲取第一個(gè)文檔數(shù)據(jù)堕担。
db.mycol.aggregate(
[
{$group : {_id : "$by_user", first_url : {$first : "$url"}}}
]
)
-
$last 根據(jù)資源文檔的排序獲取最后一個(gè)文檔數(shù)據(jù)
db.mycol.aggregate(
[
{$group : {_id : "$by_user", last_url : {$last : "$url"}}}
]
)
-
$group
將集合中的文檔分組,可用于統(tǒng)計(jì)結(jié)果
_id表示分組的依據(jù)曲聂,使用某個(gè)字段的格式為'$字段'
db.article.aggregate(
[
{$group:{_id:'$by_user',like:{$sum:"$likes"}}}
]
)
-
$project
- 修改輸入文檔的結(jié)構(gòu), 可以用來(lái)重命名增加或刪除域也可以用于創(chuàng)建計(jì)算結(jié)果以及嵌套文檔
db.article.aggregate(
[
{$project:{by_user:1}}
]
)
-
$match
- 用于過(guò)濾數(shù)據(jù),只輸出符合條件的文檔佑惠。
db.article.aggregate(
[
{$match:{likes:{$gt:0,$lte:20}}},
{$project:{title:1,_id:0}}
]
)
-
$limit
- 用來(lái)限制MongoDB聚合管道返回的文檔數(shù)朋腋。
從集合的起始位置查找,限制返回兩條
db.article.aggregate(
[
{$limit:2}
]
)
*###$skip
- 在聚合管道中跳過(guò)指定數(shù)量的文檔膜楷,并返回余下的文檔
db.article.aggregate(
[
{$skip:2}
]
)
#在聚合管道中跳過(guò)指定數(shù)量的文檔旭咽,并返回余下的文檔。
-
$sort
- 將輸入文檔排序后輸出
例:查詢出點(diǎn)贊量大于0小于等于800的書(shū)籍赌厅,并且按照降序排列
db.article.aggregate(
[
{$match:{likes:{$gt:0,$lte:800}}},
{$sort:{likes:-1}}
]
)
-
$unwind
- 將文檔中的某一個(gè)數(shù)組類(lèi)型字段拆分成多條穷绵,每條包含數(shù)組中的一個(gè)值。
db.article.aggregate(
[
{$unwind:'$tags'}
]
)