最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)查詢的結(jié)果簡(jiǎn)化成一個(gè)與原來(lái)的集合完全不同的結(jié)構(gòu)。MapReduce把一個(gè)數(shù)據(jù)庫(kù)查詢的值映射為一個(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í),你建立將傳遞到聚合操作流水線的下一級(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)化為小寫。
$toUpper將字符串轉(zhuǎn)化為大寫

總結(jié)

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

相關(guān)文章

  • MongoDB基礎(chǔ)之查詢文檔

    MongoDB基礎(chǔ)之查詢文檔

    這篇文章介紹了MongoDB基礎(chǔ)之查詢文檔,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Windows系統(tǒng)啟動(dòng)MongoDB報(bào)錯(cuò)無(wú)法連接服務(wù)器的問(wèn)題及解決方案

    Windows系統(tǒng)啟動(dòng)MongoDB報(bào)錯(cuò)無(wú)法連接服務(wù)器的問(wèn)題及解決方案

    在Windows系統(tǒng)中啟動(dòng)MongoDB時(shí)遇到連接拒絕的錯(cuò)誤,通常是因?yàn)榉?wù)未運(yùn)行或配置問(wèn)題,本文給大家分享Windows系統(tǒng)啟動(dòng)MongoDB報(bào)錯(cuò)無(wú)法連接服務(wù)器的問(wèn)題及解決方案,一起看看吧
    2024-10-10
  • PHP中的mongodb group操作實(shí)例

    PHP中的mongodb group操作實(shí)例

    這篇文章主要介紹了PHP中的mongodb group操作實(shí)例,本文給出了3個(gè)group命令的用法,需要的朋友可以參考下
    2014-09-09
  • 解決mongo的tickets被耗盡導(dǎo)致卡頓問(wèn)題

    解決mongo的tickets被耗盡導(dǎo)致卡頓問(wèn)題

    這篇文章主要介紹了解決mongo的tickets被耗盡導(dǎo)致卡頓問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • ubuntu mongodb安裝在哪個(gè)文件夾路徑詳解

    ubuntu mongodb安裝在哪個(gè)文件夾路徑詳解

    這篇文章主要為大家介紹了ubuntu mongodb安裝在哪個(gè)文件夾的安裝路徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • springboot整合mongodb

    springboot整合mongodb

    這篇文章主要介紹了springboot如何整合mongodb,mongodb的安裝和使用,感興趣的同學(xué)可以參考閱讀本文
    2023-03-03
  • 解決MongoDB 排序超過(guò)內(nèi)存限制的問(wèn)題

    解決MongoDB 排序超過(guò)內(nèi)存限制的問(wèn)題

    最近小編遇到這樣的問(wèn)題:對(duì)集合執(zhí)行一個(gè)大排序操作(如聚合),出現(xiàn)以下錯(cuò)誤:(測(cè)試版本:MongoDB 3.0.6),怎么快速解決此問(wèn)題呢?下面小編給大家分享MongoDB 排序超過(guò)內(nèi)存限制的解決方法,一起看看吧
    2017-07-07
  • MongoDB通過(guò)查詢與游標(biāo)徹底玩轉(zhuǎn)分布式文件存儲(chǔ)

    MongoDB通過(guò)查詢與游標(biāo)徹底玩轉(zhuǎn)分布式文件存儲(chǔ)

    MongoDB最大的特點(diǎn)是它支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引,這篇文章主要介紹了MongoDB查詢與游標(biāo),徹底玩轉(zhuǎn)分布式文件存儲(chǔ),需要的朋友可以參考下
    2023-01-01
  • MongoDB在不同主機(jī)間復(fù)制數(shù)據(jù)庫(kù)和集合的教程

    MongoDB在不同主機(jī)間復(fù)制數(shù)據(jù)庫(kù)和集合的教程

    MongoDB自帶了clone一族JavaScript函數(shù)來(lái)進(jìn)行數(shù)據(jù)的復(fù)制,這里我們總結(jié)了MongoDB在不同主機(jī)間復(fù)制數(shù)據(jù)庫(kù)和集合的教程,列舉出了一些主從復(fù)制操作中常用的重要函數(shù):
    2016-07-07
  • Vercel+MongoDB Atlas部署詳細(xì)指南

    Vercel+MongoDB Atlas部署詳細(xì)指南

    這篇文章主要為大家介紹了Vercel+MongoDB Atlas部署的詳細(xì)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評(píng)論

东乌珠穆沁旗| 疏附县| 龙州县| 鹰潭市| 武定县| 洛阳市| 屏东市| 安庆市| 石景山区| 婺源县| 贵阳市| 镇康县| 深水埗区| 沁阳市| 融水| 花莲市| 石阡县| 盘锦市| 石家庄市| 乌海市| 乌审旗| 聂拉木县| 巴中市| 会东县| 崇阳县| 黄山市| 广东省| 莆田市| 万荣县| 易门县| 赣州市| 枣庄市| 辽宁省| 长宁县| 庄河市| 罗田县| 蛟河市| 民勤县| 咸宁市| 金川县| 若尔盖县|