MongoDB 聚合

2018-03-20 19:42 更新

MongoDB教程 - MongoDB聚合


聚合操作來自多個文檔的值組,并對分組的數(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í)行操作,并將輸出用作下一個命令的輸入,以此類推。

我們可以在管道操作中使用以下操作。

  • $project: 從集合中選擇特定字段。
  • $match: 過濾文檔。
  • $group: 聚合。
  • $sort: 排序文檔。
  • $skip: 向前跳過。
  • $limit: 以從當(dāng)前位置開始的給定數(shù)量限制文檔的數(shù)量。
  • $unwind: 展開正在使用數(shù)組的文檔。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號