MongoDB aggregate做統計資料(group進階)。
最近一直在用mongodb,有時候會需要用到統計,在網上查了一些資料,最適合用的就是用aggregate,以下介紹一下自己運用的心得。。
別人寫過的我就不過多描述了,大家一搜能搜尋到N多一樣的,我寫一下我的總結。
基礎知識
請大家自行查詢更多,以下是關鍵文件。
操作符介紹:
$project:包含、排除、重新命名和顯示欄位
$match:查詢,需要同find()一樣的引數
$limit:限制結果數量
$skip:忽略結果的數量
$sort:按照給定的欄位排序結果
$group:按照給定表示式組合結果
$unwind:分割嵌入陣列到自己頂層檔案
相關使用:
db.collection.aggregate([array]);
array可是是任何一個或多個操作符。
group和match的用法,使用過sqlserver,group的用法很好理解,根據指定列進行分組統計,可以統計分組的數量,也能統計分組中的和或者平均值等。
group之前的match,是對源資料進行查詢,group之後的match是對group之後的資料進行篩選;
同理,sort,skip,limit也是同樣的原理;
1 {_id:1,name:"a",status:1,num:1} 2 {_id:2,name:"a",status:0,num:2} 3 {_id:3,name:"b",status:1,num:3} 4 {_id:4,name:"c",status:1,num:4} 5 {_id:5,name:"d",status:1,num:5}
以下是示例:
應用一:統計name的數量和總數;
db.collection.aggregate([
{$group:{_id:"$name",count:{$sum:1},total:{$sum:"$num"}}
]);
應用二:統計status=1的name的數量;
db.collection.aggregate([
{$match:{status:1}},
{$group:{_id:"$name",count:{$sum:1}}}
]);
應用三:統計name的數量,並且數量為小於2的;
db.collection.aggregate([
{$group:{_id:"$name",count:{$sum:1}},
{$match:{count:{$lt:2}}}
]);
應用四:統計stauts=1的name的數量,並且數量為1的;
db.collection.aggregate([
{$match:{status:1}},
{$group:{_id:"$name",count:{$sum:1}}},
{$match:{count:1}}
]);
多列group,根據name和status進行多列
db.collection.aggregate([
{$group:{_id:{name:"$name",st:"$status"},count:{$sum:1}}}
]);
$project該操作符很簡單,
db.collection.aggregate([
{$project:{name:1,status:1}}
]);
結果是,只有_id,name,status三個欄位的表資料,相當於sql表示式 select _id,name,status from collection
$unwind
這個操作符可以將一個陣列的文件拆分為多條文件,在特殊條件下有用,本人暫沒有進行過多的研究。
以上基本就可以實現大部分統計了,group前條件,group後條件,是重點。
轉載:http://www.cnblogs.com/fycayy/p/3850973.html?utm_source=tuicool&utm_medium=referral
相關文章
- Spring Data MongoDB 使用group和unwind實現對陣列資料進行簡單統計SpringMongoDB陣列
- Mongodb進階MongoDB
- 實戰 MongoDB AggregateMongoDB
- mongodb aggregate 實踐MongoDB
- MongoDB:aggregate與aggregateCursorMongoDB
- 用highcharts做資料統計
- MongoDB aggregate效能優化與排序MongoDB優化排序
- 資料視覺化設計的小白高階進階攻略視覺化
- 用Excel做資料說明――描述統計Excel
- (二)《SQL進階教程》學習記錄--GROUP BY、PARTITION BYSQL
- 【資料庫】Redis進階篇資料庫Redis
- 備份系統執行資料收集及分析的設計 | 運維進階運維
- 資料庫的sort group by和hash group by資料庫
- 《MySQL 進階篇》十六:資料庫的設計規範MySql資料庫
- 把兩個group by的統計資料聯合在一起
- MongoDB - 資料模型的設計模式MongoDB模型設計模式
- SQL對資料進行按月統計或對資料進行按星期統計的例項程式碼SQL
- MongoDB高階應用之資料轉存與恢復MongoDB
- 資料結構進階:ST表資料結構
- 【Go進階—資料結構】mapGo資料結構
- 【Go進階—資料結構】ChannelGo資料結構
- 【Go進階—資料結構】sliceGo資料結構
- iOS資料庫技術進階iOS資料庫
- 進銷存系統資料庫設計資料庫
- 【Mongodb】 對 shard 進行大量資料拆分測試MongoDB
- MongoDB資料庫的設計規範MongoDB資料庫
- python資料庫-mongoDB的高階查詢操作(55)Python資料庫MongoDB
- MongoDB高階應用之資料轉存與恢復(5)MongoDB
- 鵝廠資料庫的進階之路資料庫
- 【Go進階—資料結構】stringGo資料結構
- 資料庫發展階段之資料庫系統階段資料庫
- mongodb分組統計MongoDB
- Express 實戰(八):利用 MongoDB 進行資料持久化ExpressMongoDB持久化
- MongoDB從入門到實戰之.NET Core使用MongoDB開發ToDoList系統(3)-系統資料集合設計MongoDB
- [譯] 使用 Pandas 對 Kaggle 資料集進行統計資料分析
- mongodb 插入資料MongoDB
- MongoDB資料庫MongoDB資料庫
- 技術管理進階——技術部如何做績效考核設計?