共計 1788 個字符,預計需要花費 5 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這期內容當中丸趣 TV 小編將會給大家帶來有關 MongoDB 中有哪些聚合命令,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
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
上述就是丸趣 TV 小編為大家分享的 MongoDB 中有哪些聚合命令了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。
向 AI 問一下細節