【MongoDB】MongoDB之彙總架構(一),mongodb彙總架構

來源:互聯網
上載者:User

【MongoDB】MongoDB之彙總架構(一),mongodb彙總架構

題記:

還有3天2014年結束了,這個月的計劃除了總結Mongodb外其他計劃都已經完成了。最近由於懶惰對於mongodb的研究暫停了好長時間。在最後的三天裡,對於mongodb的研究做以總結和梳理;

一、基本概念

對於彙總架構,我在官方文檔(http://docs.mongodb.org/manual/core/aggregation-introduction/)找到對它的介紹。翻譯大概意思如下:

彙總是處理資料記錄並且返回計算結果的操作。mongodb提供了一組強大針對資料集合進行檢查和計算的彙總操作。在mongod執行個體中運行資料彙總可以簡化應用程式代碼,約束資源需求;和查詢一樣,在mongodb中彙總操作把文檔的集合作為輸入參數,以一個或者多個文檔的形式返回結果。

在mongodb中使用彙總架構可以對集合中的文檔進行變換和組合。基本上用多個構建建立一個管道(pipeline),用於對一連串的文檔進行處理。這些構建包含篩選(filtering),投射(projecting),分組(grouping),排序(sorting),限制(limiting)和跳過(skipping).

以下是官方文檔中的執行個體圖:

 

二、基本操作符

比如有一個儲存雜誌文章的集合。你可能希望找出發表文章最多哪個作者、 假設每篇文章中被儲存為MongoDB的一個文檔,可以按照如下步驟建立管道。

1. 將每個文章文檔中的作者投射出來

2. 將作者按照名字排序,統計每個名字出現的次數

3. 將作者按照名字出現的次數降序排列

4. 將返回結果限制為前五個

對於操作符號執行個體:

1. {‘$project’:{'auther':1}} 這樣可以把‘author’從每個文檔中投射出來;執行結果後該文檔會存在{‘id’:id,'author':author}

2.  {'$group':{'Id:''$author','count':{'$sum':1}}}  這樣就會將作者按照名字排序,某個作者名字每出現一次,就會對每個作者的count加一。

執行該步驟後,結果集合中的每個文檔就是這樣的結構:{"_id": "authorName","count": articleCount}

3. {"$sort": {"count":-1}}  這個操作會對結果集合中的文檔根據“count”欄位進行降序排列

4. {"$limit":5} 這個結果的顯示為當前結果的前五個文檔。

其他的操符號:http://docs.mongodb.org/manual/reference/operator/aggregation-pipeline

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.