在本文章中,會演示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 建立...