聚合操作來自多個文檔的值組,并對分組的數(shù)據(jù)返回單個值。
在SQL中,avg,sum和count函數(shù)都是聚合操作的示例。
要在MongoDB中進行聚合,請使用aggregate()方法。
aggregate()方法的基本語法如下
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
要獲取每個用戶編寫的教程數(shù),請使用aggregate()方法,如下所示:
> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}]) >
下表列出了聚合表達式。
表達式 | 描述 | 例子 |
---|---|---|
$sum | 總和值。 | db.mycol.aggregate([{$ group:{_id:“$ by_user",num_tutorial:{$ sum:“$ comments"}}}] |
$avg | 計算平均值。 | 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ù)分組從源文檔獲取第一個文檔。 | db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}]) |
$last | 根據(jù)分組從源文檔獲取最后一個文檔。 | db.mycol.aggregate([{$ group:{_id:“$ by_user",last_url:{$ last:“$ url"}}}]) |
在MongoDB中,我們可以對一些文檔執(zhí)行操作,并將輸出用作下一個命令的輸入,以此類推。
我們可以在管道操作中使用以下操作。
更多建議: