聚合操作來(lái)自多個(gè)文檔的值組,并對(duì)分組的數(shù)據(jù)返回單個(gè)值。
在SQL中,avg,sum和count函數(shù)都是聚合操作的示例。
要在MongoDB中進(jìn)行聚合,請(qǐng)使用aggregate()方法。
aggregate()方法的基本語(yǔ)法如下
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
要獲取每個(gè)用戶編寫(xiě)的教程數(shù),請(qǐng)使用aggregate()方法,如下所示:
> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}]) >
下表列出了聚合表達(dá)式。
表達(dá)式 | 描述 | 例子 |
---|---|---|
$sum | 總和值。 | db.mycol.aggregate([{$ group:{_id:“$ by_user",num_tutorial:{$ sum:“$ comments"}}}] |
$avg | 計(jì)算平均值。 | db.mycol.aggregate([{$ group:{_id:“$ by_user",num_tutorial:{$ avg:“$ comments"}}}]) |
$min | 從集合中的所有文檔獲取相應(yīng)值的最小值。 | db.mycol.aggregate([{$ group:{_id:“$ by_user",num_tutorial:{$ min:“$ comments"}}}] |
$max | 獲取值的最大值。 | db.mycol.aggregate([{$ group:{_id:“$ by_user",num_tutorial:{$ max:“$ comments"}}}]) |
$push | 將值插入到結(jié)果文檔中的數(shù)組。 | db.mycol.aggregate([{$ group:{_id:“$ by_user",url:{$ push:“$ url"}}}]) |
$addToSet | 將值插入到生成的文檔中的數(shù)組,而不創(chuàng)建重復(fù) | db.mycol.aggregate([{$ group:{_id:“$ by_user",url:{$ addToSet:“$ url"}}}]) |
$first | 根據(jù)分組從源文檔獲取第一個(gè)文檔。 | db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}]) |
$last | 根據(jù)分組從源文檔獲取最后一個(gè)文檔。 | db.mycol.aggregate([{$ group:{_id:“$ by_user",last_url:{$ last:“$ url"}}}]) |
在MongoDB中,我們可以對(duì)一些文檔執(zhí)行操作,并將輸出用作下一個(gè)命令的輸入,以此類(lèi)推。
我們可以在管道操作中使用以下操作。
更多建議: