前言:通常查詢能夠經過find方法,但若是是比較複雜的查詢或者數據統計的話,find可能就無能爲力了,這時也許你須要的是aggregate.mongodb
英文文檔中是aggregation pipeline,直譯爲聚合管道,它能夠對數據文檔進行變換和組合。聚合管道是基於數據流概念,數據進入管道通過一個或多個stage,每一個stage對數據進行操做(篩選,投射,分組,排序,限制或跳過)後輸出最終結果。數據庫
示例來源:https://docs.mongodb.com/manual/core/aggregation-pipeline/數組
mongoDB中有許多操做符,在aggregate中每一個stage能夠使用的操做符叫作管道操做符,如下列舉比較經常使用的管道操做符:spa
操做符 | 簡述 |
---|---|
$project | 投射操做符,用於重構每個文檔的字段,能夠提取字段,重命名字段,甚至能夠對原有字段進行操做後新增字段 |
$match | 匹配操做符,用於對文檔集合進行篩選 |
$group | 分組操做符,用於對文檔集合進行分組 |
$unwind | 拆分操做符,用於將數組中的每個值拆分爲單獨的文檔 |
$sort | 排序操做符,用於根據一個或多個字段對文檔進行排序 |
$limit | 限制操做符,用於限制返回文檔的數量 |
$skip | 跳過操做符,用於跳過指定數量的文檔 |
$lookup | 鏈接操做符,用於鏈接同一個數據庫中另外一個集合,並獲取指定的文檔,相似於populate |
$count | 統計操做符,用於統計文檔的數量 |
更多操做符介紹詳見官網:https://docs.mongodb.com/manual/reference/operator/aggregation/排序
操做符先簡單介紹一下,由於裏面還能夠大有文章,留在下一篇。ip
db.collection.aggregate([])是聚合管道查詢使用的方法,參數是數組,每一個數組元素就是一個stage,stage中運用操做符對數據進行處理後再交由下一個stage,直到沒有下個stage,就輸出最終的結果,而數據的處理則是經過使用操做符,本文先簡單介紹了一下有哪些經常使用的操做符,下一篇再詳細說明。rem