日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

MongoDB中aggregate()方法實例詳解_MongoDB

作者:白菜4220 ? 更新時間: 2023-02-09 編程語言

前言

MongoDB的一個很大的好處是能夠使用MapReduce來吧數據庫查詢的結果簡化成一個與原來的集合完全不同的結構。MapReduce把一個數據庫查詢的值映射為一個完全不同的形式,然后簡化結果,使它們的可用性更好。

MongoDB有一個MapReduce框架,它也允許你使用聚合來簡化吧一個MapReduce操作傳輸到另一個MapReduce操作的一系列過程。有了MapReduce和聚合,可以用數據生成一些不平凡的業績。聚合的概念是指,在把MongoDB服務器上的文檔匯編為一個結果集時,對它們執行一些列的操作。這比在Node.js應用程序中檢索它們和處理它們更高效,因為MongoDB的服務器可以在本地操作數據塊。

1,了解aggergate()方法

Collection對象提供了aggregate()方法來對數據進行聚合操作。aggregate()方法的語法如下

aggregate(operators,[options],callback)

operators參數是如表1所示的聚合運算符的數組,它允許你定義對數據執行什么匯總操作。options參數允許你設置readPreference屬性,它定義了從哪里讀取數據。callback參數是接受err和res

可以在aggregate()方法上使用的聚合運算符
運算符 說明
$project

通過重命名,添加或刪除字段重塑文檔。你也可以重新計算值,并添加子文檔。例如,下面的例子包括title并排除name:

{$project:{title:1,name:0}}

以下是把name重命名為title的例子:

{$project{title:"$name"}}

下面是添加一個新的total字段,并用price和tax字段計算它的值的例子:

{$project{total:{$add:["$price","$tax"]}}}

$match 通過使用query對象運算符來過濾文檔集。
$limit 限定可以傳遞到聚合操作的下一個管道中的文檔數量。例如{$limit:5}
$skip 指定處理聚合操作的下一個管道前跳過的一些文檔
$unwind 指定一個數組字段用于分割,對每個值創建一個單獨的文檔。例如{$unwind:"$myArr"}
$group

把文檔分成一組新的文檔用于在管道中的下一級。新對象的字段必須在$group對象中定義。你還可以把表2中列出的分組表

達式運算符應用到該組的多個文檔中。例如,使用下面的語句匯總value字段:{$group:{set_id:"$0_id",total:{$sum:"$value"}}}

$sort

在把文檔傳遞給處理聚合操作的下一個管道前對它們排序。排序指定一個帶有field:<sort_order>屬性的對象,其中<sort_order>

為1表示升序,而-1表示降序

2,實現聚合表達式運算符

當你實現聚合運算符時,你建立將傳遞到聚合操作流水線的下一級的新文檔。MongoDB的聚合框架提供了許多表達式運算符,它們有助于對新字段計算值或對文檔中的現有字段進行比較。

當在$group聚合管道上操作時,多個文檔與創建的新文檔中定義的字段匹配。MongoDB提供了一組你可以應用到這些文檔的運算符,并用它在原來文檔集的字段值的基礎上計算新組文檔中的字段值。下表列出了$group表達式運算符。

聚合$group表達式運算符
運算符 說明
$addToSet 返回一組文檔中所有文檔所選字段的全部唯一值的數組。例如:colors:{$addToSet:"color"}
$first 返回一組文檔中一個字段的第一個值。例如:firstValue:{$first:"$value"}
$last 返回一組文檔中一個字段的最后一個值。例如:lastValue:{$last:"$value"}
$max 返回一組文檔中一個字段的最大值。例如:maxValue:{$max:"$value"}
$min 返回一組文檔中一個字段的最小值。例如:minValue:{$min:"$value"}
$avg 返回一組文檔中以個字段的平均值。例如:avgValue:{$avg:"$value"}
$push 返回一組文檔中所有文檔所選字段的全部值的數組。例如:username:{$push:"$username"}
$sum 返回一組文檔中以個字段的全部值的總和。例如:total:{$sum:"$value"}

此外,計算新的字段值時,可以應用一些字符串和算術運算符。下表列出了在聚合運算符中計算新字段值可以應用的最常用的一些運算符。

可用在聚合表達式的字符串和算術運算符
運算符 說明
$add 計算數值的總和。例如:valuePlus5:{$add:["$value",5]}
$divide 給定兩個數值,用第一個數除以第二個數。例如:valueDividedBy5:{$divide:["$value",5]}
$mod 取模。例如:{$mod:["$value",5]}
$multiply 計算數值數組的乘積。例如:{$multiply:["$value",5]}
$subtract 給定兩個數值,用第一個數減去第二個數。例如:{$subtract:["$value",5]}
$concat

連接兩個字符串 例如:{$concat:["str1","str2"]}

$strcasecmp 比較兩個字符串并返回一個整數來反應比較結果。例如 {$strcasecmp:["$value","$value"]}
$substr 返回字符串的一部分。例如:hasTest:{$substr:["$value","test"]}
$toLower 將字符串轉化為小寫。
$toUpper 將字符串轉化為大寫

總結

原文鏈接:https://blog.csdn.net/qq_39263663/article/details/80459833

欄目分類
最近更新