欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB中aggregate()方法實(shí)例詳解

 更新時(shí)間:2023年01月03日 12:41:32   作者:白菜4220  
MongoDB中聚合(aggregate)主要用于處理數(shù)據(jù)(諸如統(tǒng)計(jì)平均值,求和等),并返回計(jì)算后的數(shù)據(jù)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于MongoDB中aggregate()方法的相關(guān)資料,需要的朋友可以參考下

前言

MongoDB的一個(gè)很大的好處是能夠使用MapReduce來(lái)吧數(shù)據(jù)庫(kù)查詢(xún)的結(jié)果簡(jiǎn)化成一個(gè)與原來(lái)的集合完全不同的結(jié)構(gòu)。MapReduce把一個(gè)數(shù)據(jù)庫(kù)查詢(xún)的值映射為一個(gè)完全不同的形式,然后簡(jiǎn)化結(jié)果,使它們的可用性更好。

MongoDB有一個(gè)MapReduce框架,它也允許你使用聚合來(lái)簡(jiǎn)化吧一個(gè)MapReduce操作傳輸?shù)搅硪粋€(gè)MapReduce操作的一系列過(guò)程。有了MapReduce和聚合,可以用數(shù)據(jù)生成一些不平凡的業(yè)績(jī)。聚合的概念是指,在把MongoDB服務(wù)器上的文檔匯編為一個(gè)結(jié)果集時(shí),對(duì)它們執(zhí)行一些列的操作。這比在Node.js應(yīng)用程序中檢索它們和處理它們更高效,因?yàn)镸ongoDB的服務(wù)器可以在本地操作數(shù)據(jù)塊。

1,了解aggergate()方法

Collection對(duì)象提供了aggregate()方法來(lái)對(duì)數(shù)據(jù)進(jìn)行聚合操作。aggregate()方法的語(yǔ)法如下

aggregate(operators,[options],callback)

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

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

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

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

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

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

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

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

$match通過(guò)使用query對(duì)象運(yùn)算符來(lái)過(guò)濾文檔集。
$limit限定可以傳遞到聚合操作的下一個(gè)管道中的文檔數(shù)量。例如{$limit:5}
$skip指定處理聚合操作的下一個(gè)管道前跳過(guò)的一些文檔
$unwind指定一個(gè)數(shù)組字段用于分割,對(duì)每個(gè)值創(chuàng)建一個(gè)單獨(dú)的文檔。例如{$unwind:"$myArr"}
$group

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

達(dá)式運(yùn)算符應(yīng)用到該組的多個(gè)文檔中。例如,使用下面的語(yǔ)句匯總value字段:{$group:{set_id:"$0_id",total:{$sum:"$value"}}}

$sort

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

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

2,實(shí)現(xiàn)聚合表達(dá)式運(yùn)算符

當(dāng)你實(shí)現(xiàn)聚合運(yùn)算符時(shí),你建立將傳遞到聚合操作流水線(xiàn)的下一級(jí)的新文檔。MongoDB的聚合框架提供了許多表達(dá)式運(yùn)算符,它們有助于對(duì)新字段計(jì)算值或?qū)ξ臋n中的現(xiàn)有字段進(jìn)行比較。

當(dāng)在$group聚合管道上操作時(shí),多個(gè)文檔與創(chuàng)建的新文檔中定義的字段匹配。MongoDB提供了一組你可以應(yīng)用到這些文檔的運(yùn)算符,并用它在原來(lái)文檔集的字段值的基礎(chǔ)上計(jì)算新組文檔中的字段值。下表列出了$group表達(dá)式運(yùn)算符。

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

此外,計(jì)算新的字段值時(shí),可以應(yīng)用一些字符串和算術(shù)運(yùn)算符。下表列出了在聚合運(yùn)算符中計(jì)算新字段值可以應(yīng)用的最常用的一些運(yùn)算符。

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

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

$strcasecmp比較兩個(gè)字符串并返回一個(gè)整數(shù)來(lái)反應(yīng)比較結(jié)果。例如 {$strcasecmp:["$value","$value"]}
$substr返回字符串的一部分。例如:hasTest:{$substr:["$value","test"]}
$toLower將字符串轉(zhuǎn)化為小寫(xiě)。
$toUpper將字符串轉(zhuǎn)化為大寫(xiě)

總結(jié)

到此這篇關(guān)于MongoDB中aggregate()方法實(shí)例詳解的文章就介紹到這了,更多相關(guān)MongoDB aggregate()方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MongoDB進(jìn)階之動(dòng)態(tài)字段設(shè)計(jì)詳解

    MongoDB進(jìn)階之動(dòng)態(tài)字段設(shè)計(jì)詳解

    這篇文章主要給大家介紹了MongoDB進(jìn)階之動(dòng)態(tài)字段設(shè)計(jì)的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • MongoDB CRUD操作中的插入實(shí)例教程

    MongoDB CRUD操作中的插入實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于MongoDB CRUD操作中的插入的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • MongoDB數(shù)據(jù)庫(kù)索引用法詳解

    MongoDB數(shù)據(jù)庫(kù)索引用法詳解

    本文詳細(xì)講解了MongoDB數(shù)據(jù)庫(kù)索引的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Linux下MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)備份詳解

    Linux下MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)備份詳解

    這篇文章主要給大家介紹了在Linux系統(tǒng)下下MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)備份的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • MongoDB 刪除文檔的方式(刪除一個(gè)、批量刪除)

    MongoDB 刪除文檔的方式(刪除一個(gè)、批量刪除)

    這篇文章主要介紹了MongoDB 刪除文檔的方式(刪除一個(gè)、批量刪除),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • mongodb 集群重構(gòu)和釋放磁盤(pán)空間實(shí)例詳解

    mongodb 集群重構(gòu)和釋放磁盤(pán)空間實(shí)例詳解

    這篇文章主要介紹了mongodb 集群重構(gòu)和釋放磁盤(pán)空間實(shí)例詳解的相關(guān)資料,具有一定的參考價(jià)值,需要的朋友可以參考下
    2016-11-11
  • 解決MAC上啟動(dòng)mongod報(bào)錯(cuò)exiting with code 1的問(wèn)題

    解決MAC上啟動(dòng)mongod報(bào)錯(cuò)exiting with code 1的問(wèn)題

    這篇文章主要介紹了解決MAC上啟動(dòng)mongod報(bào)錯(cuò)exiting with code 1的問(wèn)題,本文給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • centos7安裝mongo數(shù)據(jù)庫(kù)的方法(mongo4.2.8)

    centos7安裝mongo數(shù)據(jù)庫(kù)的方法(mongo4.2.8)

    這篇文章給大家介紹了centos7安裝mongo4.2.8數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程,包括mongo數(shù)據(jù)庫(kù)安裝和啟動(dòng)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-01-01
  • 批量備份還原導(dǎo)入與導(dǎo)出MongoDB數(shù)據(jù)方式

    批量備份還原導(dǎo)入與導(dǎo)出MongoDB數(shù)據(jù)方式

    前面我們介紹了mongoDB的安裝與配置,接下來(lái)我們講一講如何使用mongo的可視化工具Navicat對(duì)mongo數(shù)據(jù)庫(kù)進(jìn)行操作和如何在終端進(jìn)行mongo數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)的批量操作
    2021-09-09
  • MongoDB學(xué)習(xí)筆記之分組(group)使用示例

    MongoDB學(xué)習(xí)筆記之分組(group)使用示例

    這篇文章主要介紹了MongoDB學(xué)習(xí)筆記之分組(group)使用示例,本文直接給出一組測(cè)試數(shù)據(jù),然后練習(xí)分組的基本使用,需要的朋友可以參考下
    2015-07-07

最新評(píng)論