MongoDB聚合語法及示例

2021-12-30 01:52:24 字數 1478 閱讀 4672

mongodb中聚合的方法使用aggregate()。

mongodb中聚合(aggregate)主要用於處理資料(諸如統計平均值,求和等),並返回計算後的資料結果。

語法

>db.collection_name.aggregate(aggregate_operation)示例集合中的資料如下:,,,

現在我們通過以上集合計算每個作者所寫的文章數,使用aggregate()計算結果如下:

> db.mycol.aggregate([}}])

,

],"ok" : 1

}>

在上面的例子中,我們通過欄位by_user欄位對資料進行分組,並計算by_user欄位相同值的總和。

下標展示了一些聚合的表示式:

管道的概念

mongodb的聚合管道將mongodb文件在乙個管道處理完畢後將結果傳遞給下乙個管道處理。管道操作是可以重複的。

表示式:處理輸入文件並輸出。表示式是無狀態的,只能用於計算當前聚合管道的文件,不能處理其它的文件。

這裡我們介紹一下聚合框架中常用的幾個操作:

·$project:修改輸入文件的結構。可以用來重新命名、增加或刪除,也可以用於建立計算結果以及巢狀文件;

·$match:用於過濾資料,只輸出符合條件的文件。$match使用mongodb的標準查詢操作。

·$limit:用來限制mongodb聚合管道返回的文件數。

·$skip:在聚合管道中跳過指定數量的文件,並返回餘下的文件;

·$unwind:將文件中的某乙個陣列型別字段拆成多條,每條包含陣列中的乙個值。

·$group:將集合中的文件分組,可用於統計結果;

·$sort:將輸入文件排序後輸出;

·$geonear:輸出接近某一地理位置的有序文件。

管道操作符示例

1.$project示例

db.article.aggregate(});

這樣的話結果中就只還有_id,tilte和author三個欄位了,預設情況下_id欄位是被包含的,如果要想不包含_id話可以這樣:

db.article.aggregate(

});2.$match示例

db.articles.aggregate( [

} },

} }] );

$match用於獲取分數大於70小於或等於90記錄,然後將符合條件的記錄送到下一階段$group管道操作符進行處理。

3.$skip示例

db.article.aggregate(

);經過$skip管道操作符處理後,前五個文件被"過濾"掉。

MongoDB 聚合 游標

今天跟大家分享一下mongodb中比較好玩的知識,主要包括 聚合,游標。一 聚合 常見的聚合操作跟sql server一樣,有 count,distinct,group,mapreduce。1 count count是最簡單,最容易,也是最常用的聚合工具,它的使用跟我們c 裡面的count使用簡直一...

mongodb 聚合管道

mongodb聚合管道由多個階段組成。每個階段在文件通過管道時轉換文件。管道階段不需要為每個輸入文件生成乙個輸出文件 例如,有些階段可能會生成新的文件或過濾掉文件。管道階段可以在管道 現多次,但 out merge和 geonear階段除外。有關所有可用階段的列表,請參見聚合管道階段。mongodb...

mongodb中的聚合

mongodb提供三種方式來實現聚合 聚合管道,map reduce,及單一目的的聚合方法。管道操作可以在分片的集合上運算,可以使用索引來提高效率,管道使用了mongodb內部的操作來進行高效資料聚合,是聚合操作的首選。tch sort操作出現在管道的開始位置時候可以使用索引。在3.2開始索引可以覆...