MongoDB 聚集和分組例子

2021-09-01 23:34:16 字數 2424 閱讀 1901

在本文章中,會演示mongodb使用聚集函式對文件進行分組的用法。

1.測試資料

**主機網域名稱列表的json格式檔案

website.json

匯入website文件

> mongoimport -d testdb -c website --file website.json

connected to: 127.0.0.1

mon jan 13 14:30:22.662 imported 10 objects

注意

如果是已存在的文件, 加 --upsert 選項來覆蓋資料.

> mongoimport -d testdb -c website --file website.json --upsert

2.分組例子

使用db.collection.aggregate和

$group函式進行文件分組

2.1 下面的例子通過「hosting」字段分組並顯示每個主機總數

> db.website.aggregate(}}

);

結果

,,,

],"ok" : 1

}

用sql可以表示為:

select hosting, sum(hosting) as total

from website

group by hosting

2.2 使用$sort函式進行排序

>  db.website.aggregate(}},

});

結果 -- 「total「的降序顯示,公升序顯示的話用

$sort : 實現

,,,

],"ok" : 1

}

2.3 使用

$match函式來對匹配」

aws.amazon.com

「的資料根據」

hosting

「分組

> db.website.aggregate(},}

});

輸出:

],

"ok" : 1

}

詳細例子請參照官方手冊mongodb aggregation guide

3.把分組資料匯出成csv或者json格式檔案

通過函式mongoexport來實現

3.1 將分組的結果儲存到變數中,本例變數為」

groupdata「

> var groupdata = db.website.aggregate(}},

});

3.2 將」groupdata.result「插入到新集合中

> db.websitegroup.insert(groupdata.result);

> db.websitegroup.find().pretty()

>

3.3 將集合

websitegroup匯出到csv檔案

c:\> mongoexport -d testdb -c websitegroup -f _id,total -o group.csv --csv

connected to: 127.0.0.1

exported 4 records

csv檔案中資料

group.csv

_id,total

"aws.amazon.com",4.0

"cloud.google.com",2.0

"godaddy.com",1.0

"hostgator.com",3.0

3.4 將」

websitegroup

「集合中資料匯出到json檔案

c:\> mongoexport -d testdb -c websitegroup -o group.json

connected to: 127.0.0.1

exported 4 records

group.json檔案內容

group.json

MongoDB 聚集管道

在mongodb2.2新出現的。聚集管道式基於資料處理管道概念建模的資料聚集框架。文件進入乙個多階段能將該文件轉化為聚集結果的管道。聚集管道提供了map reduce方法了替代物,並在很多聚集任務中是首選的方案,因為map reduce的複雜性可能是你不希望看到的。上圖是乙個帶注釋的聚集管道的操作,...

postgresql 聚集函式加分組

表 id name 1 a2 b 1 bselect id,group concat name from group by id 得出的結果為 id group concat name 1 a,b 2 bpostgresql沒有現成的group concat聚集函式,但可以自定義聚集函式,所以可以容...

MongoDB聚集索引基本操作

檢視當前聚集的全部索引 db.account.getindexes v 0 建立單列索引 db.account.ensureindex 1 asc 1 desc 建立單列唯一索引 db.account.ensureindex 建立單列唯一不重複索引 db.account.ensureindex 建立...