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

MongoDB入門教程之聚合和游標(biāo)操作介紹

 更新時(shí)間:2014年08月18日 09:59:24   投稿:junjie  
這篇文章主要介紹了MongoDB入門教程之聚合和游標(biāo)操作介紹,聚合和游標(biāo)可以說是MongoDB中的高級(jí)操作了,需要的朋友可以參考下

 今天跟大家分享一下mongodb中比較好玩的知識(shí),主要包括:聚合,游標(biāo)。

一: 聚合

      常見的聚合操作跟sql server一樣,有:count,distinct,group,mapReduce。

<1> count

        count是最簡單,最容易,也是最常用的聚合工具,它的使用跟我們C#里面的count使用簡直一模一樣。

 <2> distinct

       這個(gè)操作相信大家也是非常熟悉的,指定了誰,誰就不能重復(fù),直接上圖。

 <3> group

    在mongodb里面做group操作有點(diǎn)小復(fù)雜,不過大家對sql server里面的group比較熟悉的話還是一眼

能看的明白的,其實(shí)group操作本質(zhì)上形成了一種“k-v”模型,就像C#中的Dictionary,好,有了這種思維,

我們來看看如何使用group。

    下面舉的例子就是按照age進(jìn)行g(shù)roup操作,value為對應(yīng)age的姓名。下面對這些參數(shù)介紹一下:

       key:  這個(gè)就是分組的key,我們這里是對年齡分組。

       initial: 每組都分享一個(gè)”初始化函數(shù)“,特別注意:是每一組,比如這個(gè)的age=20的value的list分享一個(gè)

initial函數(shù),age=22同樣也分享一個(gè)initial函數(shù)。

       $reduce: 這個(gè)函數(shù)的第一個(gè)參數(shù)是當(dāng)前的文檔對象,第二個(gè)參數(shù)是上一次function操作的累計(jì)對象,第一次

為initial中的{”perosn“:[]}。有多少個(gè)文檔, $reduce就會(huì)調(diào)用多少次。

   看到上面的結(jié)果,是不是有點(diǎn)感覺,我們通過age查看到了相應(yīng)的name人員,不過有時(shí)我們可能有如下的要求:

     ①:想過濾掉age>25一些人員。

     ②:有時(shí)person數(shù)組里面的人員太多,我想加上一個(gè)count屬性標(biāo)明一下。

 針對上面的需求,在group里面還是很好辦到的,因?yàn)間roup有這么兩個(gè)可選參數(shù): condition 和 finalize。

     condition:  這個(gè)就是過濾條件。

     finalize:這是個(gè)函數(shù),每一組文檔執(zhí)行完后,多會(huì)觸發(fā)此方法,那么在每組集合里面加上count也就是它的活了。

 <4> mapReduce

        這玩意算是聚合函數(shù)中最復(fù)雜的了,不過復(fù)雜也好,越復(fù)雜就越靈活。

  mapReduce其實(shí)是一種編程模型,用在分布式計(jì)算中,其中有一個(gè)“map”函數(shù),一個(gè)”reduce“函數(shù)。

   ① map:

          這個(gè)稱為映射函數(shù),里面會(huì)調(diào)用emit(key,value),集合會(huì)按照你指定的key進(jìn)行映射分組。

   ② reduce:

         這個(gè)稱為簡化函數(shù),會(huì)對map分組后的數(shù)據(jù)進(jìn)行分組簡化,注意:在reduce(key,value)中的key就是

      emit中的key,vlaue為emit分組后的emit(value)的集合,這里也就是很多{"count":1}的數(shù)組。

   ③ mapReduce:

          這個(gè)就是最后執(zhí)行的函數(shù)了,參數(shù)為map,reduce和一些可選參數(shù)。具體看圖可知:

 從圖中我們可以看到如下信息:

       result: "存放的集合名“;

       input:傳入文檔的個(gè)數(shù)。

       emit:此函數(shù)被調(diào)用的次數(shù)。

       reduce:此函數(shù)被調(diào)用的次數(shù)。

       output:最后返回文檔的個(gè)數(shù)。

最后我們看一下“collecton”集合里面按姓名分組的情況。

 二:游標(biāo)

    mongodb里面的游標(biāo)有點(diǎn)類似我們說的C#里面延遲執(zhí)行,比如:

      var list=db.person.find();

    針對這樣的操作,list其實(shí)并沒有獲取到person中的文檔,而是申明一個(gè)“查詢結(jié)構(gòu)”,等我們需要的時(shí)候通過

for或者next()一次性加載過來,然后讓游標(biāo)逐行讀取,當(dāng)我們枚舉完了之后,游標(biāo)銷毀,之后我們在通過list獲取時(shí),

發(fā)現(xiàn)沒有數(shù)據(jù)返回了。

 當(dāng)然我們的“查詢構(gòu)造”還可以搞的復(fù)雜點(diǎn),比如分頁,排序都可以加進(jìn)去。

 var single=db.person.find().sort({"name",1}).skip(2).limit(2);

那么這樣的“查詢構(gòu)造”可以在我們需要執(zhí)行的時(shí)候執(zhí)行,大大提高了不必要的花銷。

相關(guān)文章

  • MongoDB創(chuàng)建一個(gè)索引而性能提升1000倍示例代碼

    MongoDB創(chuàng)建一個(gè)索引而性能提升1000倍示例代碼

    這篇文章主要給大家介紹了關(guān)于如何在MongoDB中創(chuàng)建一個(gè)索引而性能提升1000倍的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • MongoDB快速入門筆記(三)之MongoDB插入文檔操作

    MongoDB快速入門筆記(三)之MongoDB插入文檔操作

    這篇文章主要介紹了MongoDB快速入門筆記(三)之MongoDB插入文檔操作 的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • Mongodb中MapReduce實(shí)現(xiàn)數(shù)據(jù)聚合方法詳解

    Mongodb中MapReduce實(shí)現(xiàn)數(shù)據(jù)聚合方法詳解

    Mongodb是針對大數(shù)據(jù)量環(huán)境下誕生的用于保存大數(shù)據(jù)量的非關(guān)系型數(shù)據(jù)庫,針對大量的數(shù)據(jù)。接下來通過本文給大家介紹Mongodb中MapReduce實(shí)現(xiàn)數(shù)據(jù)聚合方法詳解,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • MongoDB快速入門及其SpringBoot實(shí)戰(zhàn)教程

    MongoDB快速入門及其SpringBoot實(shí)戰(zhàn)教程

    MongoDB是一個(gè)開源、高性能、無模式的文檔型數(shù)據(jù)庫,當(dāng)初的設(shè)計(jì)就是用于簡化開發(fā)和方便擴(kuò)展,是NoSQL數(shù)據(jù)庫產(chǎn)品中的一種,它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是一種類似于JSON的格式叫BSON,本文介紹MongoDB快速入門及其SpringBoot實(shí)戰(zhàn),感興趣的朋友一起看看吧
    2023-12-12
  • MongoDB中的push操作詳解(將文檔插入到數(shù)組)

    MongoDB中的push操作詳解(將文檔插入到數(shù)組)

    $push操作符添加指定的值到數(shù)組中,下面這篇文章主要給大家介紹了關(guān)于MongoDB中push操作(將文檔插入到數(shù)組)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Mongodb解決不能連接到服務(wù)器的錯(cuò)誤問題

    Mongodb解決不能連接到服務(wù)器的錯(cuò)誤問題

    這篇文章主要介紹了Mongodb解決不能連接到服務(wù)器的錯(cuò)誤問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MongoDB入門教程之細(xì)說MongoDB數(shù)據(jù)庫的增刪查改操作

    MongoDB入門教程之細(xì)說MongoDB數(shù)據(jù)庫的增刪查改操作

    這篇文章主要介紹了MongoDB入門教程之細(xì)說MongoDB數(shù)據(jù)庫的增刪查改操作,本文環(huán)境是windows,所以以圖片形式講解,需要的朋友可以參考下
    2014-08-08
  • MongoDB 事務(wù)支持詳解

    MongoDB 事務(wù)支持詳解

    這篇文章主要介紹了MongoDB 事務(wù)支持詳解的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • MongoDB數(shù)據(jù)庫中索引和explain的使用教程

    MongoDB數(shù)據(jù)庫中索引和explain的使用教程

    這篇文章主要給大家介紹了關(guān)于MongoDB數(shù)據(jù)庫中索引和explain使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Mongodb具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 深入理解MongoDB分片的管理

    深入理解MongoDB分片的管理

    這篇文章帶大家深入理解MongoDB分片的管理,將通過主分片、分片的元數(shù)據(jù)、刪除分片、增加分片、特大塊以及均衡器這幾方面來詳細(xì)介紹,對大家的學(xué)習(xí)理解很有幫助,有需要的可以參考借鑒。
    2016-09-09

最新評論