MongoDB三種聚合命令用法介紹
聚合(Aggregation)為集合文件資料提供了各種資料處理方法,並返回計算結果。
MongoDB提供了三種方法來執行聚合命令,分別為:聚合管道法,map-reduce法和單一目標聚合法
1.聚合管道法:
管道聚合方法可以理解為合計流水線法,就是把集合裡若干含數值型的文件記錄其鍵對應的值進行各種分類統計,有點類似於SQL語言裡的group by。
語法如下:
db.collection.agrregate(
[$match:{<field>}},
{$group:{<field1>,<field2>}}
]
說明:
field1為分類欄位;field2為含各種統計運算子的數值型欄位,比如$sum, $avg, $min,$max等運算子
>use test
> db.test.insert(
... [{id:"001",amount:2,price:15.2,ok:true},
... {id:"001",amount:3,price:14.8,ok:true},
... {id:"002",amount:4,price:40,ok:true},
... {id:"002",amount:2,price:10,ok:true},
... {id:"003",amount:3,price:20.3,ok:true}
... ]
... )
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 5,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
> db.test.aggregate({ $match:{ok:true}})
{ "_id" : ObjectId("5b50388dff7043cec86841af"), "id" : "001", "amount" : 2, "price" : 15.2, "ok" : true }
{ "_id" : ObjectId("5b50388dff7043cec86841b0"), "id" : "001", "amount" : 3, "price" : 14.8, "ok" : true }
{ "_id" : ObjectId("5b50388dff7043cec86841b1"), "id" : "002", "amount" : 4, "price" : 40, "ok" : true }
{ "_id" : ObjectId("5b50388dff7043cec86841b2"), "id" : "002", "amount" : 2, "price" : 10, "ok" : true }
{ "_id" : ObjectId("5b50388dff7043cec86841b3"), "id" : "003", "amount" : 3, "price" : 20.3, "ok" : true }
> db.test.aggregate(
... {
... $group:{
... _id:'$id',
... total:{$sum:"$amount"}
... }
... })
{ "_id" : "003", "total" : 6 }
{ "_id" : "002", "total" : 12 }
{ "_id" : "001", "total" : 10 }
>
說明:_id:'$id',id為分類欄位名,total為統計結果欄位名,$sum為求和運算子號 ,$amount為求和欄位。
2.map-reduce法:
> var chenfeng=db.test.mapReduce(
... function(){
... emit(this.id,this.amount)
... },
... function(key,values){
... return Array.sum(values)
... },
... {query:{ok:true},out:{replace:"result"}}
... )
> db[chenfeng.result].find()
{ "_id" : "001", "value" : 5 }
{ "_id" : "002", "value" : 6 }
{ "_id" : "003", "value" : 3 }
>
3.單一目標聚合法:
語法:
db.collection.count(query,options)
例如:
> db.test.distinct("id")
[ "001", "002", "003" ]
>
> db.test.find({ok:true}).count()
5
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2158132/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Django model update的各種用法介紹Django
- 達夢資料庫Disql用法詳解之Disql命令列命令用法介紹資料庫SQL命令列
- MongoDB shell 介紹MongoDB
- JAVA - mongodb 聚合幾種查詢方式JavaMongoDB
- python BeautifulSoup用法介紹Python
- installer 命令介紹
- 資產納管的三種方式介紹
- mysql鎖之三種行級鎖介紹MySql
- 原創:oracle聚合函式介紹Oracle函式
- mongodb 聚合管道MongoDB
- Python qutip用法(舉例介紹)Python
- Git ORIG_HEAD用法介紹Git
- Linux xargs命令介紹Linux
- Linux useradd 命令介紹Linux
- Shell echo命令介紹
- html中Position屬性值介紹和position屬性四種用法HTML
- 介紹一個MongoDB的替代方案MongoDB
- MongoDB基本介紹與安裝(1)MongoDB
- MongoDB Oplog中的欄位介紹MongoDB
- wget命令8種實用用法wget
- MongoDB - 聚合查詢MongoDB
- linux20個常用命令詳解和用法 linux常用命令大全介紹Linux
- linux命令下jq的用法簡介Linux
- Linux重啟命令介紹Linux
- SVN命令列使用介紹命令列
- 簡單介紹 ldd 命令
- MongoDB系列--深入理解MongoDB聚合(Aggregation )MongoDB
- MongoDB 資料庫介紹及安裝MongoDB資料庫
- Android中圖片圓形設定三種方法介紹Android
- MongoDB的聚合筆記MongoDB筆記
- mongodb聚合操作記錄MongoDB
- Redis元件介紹(三)Redis元件
- Django筆記十九之manager用法介紹Django筆記
- Google Analytics 的一些用法介紹Go
- Vue腳手架介紹與基本用法Vue
- SQL?Server新特性SequenceNumber用法介紹YTZBSQLServer
- PTSQLServer中exists和except用法介紹wkaSQLServer
- Selenium用法 - - 自動化測試介紹