使用 MongoDB 进行聚合操作
在MongoDB中,为了进行聚合计算,提供了一个称为Aggregation的机制。哎呀!真方便。
举个例子,假设在WebShops集合(≒表)中记录了每个Web店铺按日统计的访问量,现在我们来获取最近一周的访问排名。
以下是使用PHP的示例代码。
// MongoDBへ接続
$mongo = new Mongo();
// MyDBデータベース
$db = $mongo->selectDB('mydb');
// WebShopsコレクション(≒テーブル)
$collShops = $db->selectCollection("webshops");
// ここ一週間でのWebアクセスが多い順に店舗を取得
$docs = $collShops->aggregate(
array(
// $match は WHERE句に相当
array(
'$match' => array(
'chiiki_id' => $chiiki_id,
'date' => array('$gt' => date('Ymd', strtotime("-7 days")))
)
),
// $group は GROUP BY句に相当
array(
'$group' => array(
'_id' => '$shopid',
'count' => array('$sum' => '$access')
)
),
// $sort は ORDER BY句に相当
array(
'$sort' => array(
'count' => -1
)
),
// $limit は LIMIT句に相当
array(
'$limit' => 10
)
)
);
// 店舗格納用配列
$ShopList = array();
// 取得成功なら配列に格納していく
if($docs['ok'] == 1) {
foreach ($docs['result'] as $id => $obj) {
$ShopList[] = $obj;
}
}
// 表示
print_r($ShopList);
请在参考链接中深入了解更详细的信息。
▼第10回 使用MongoDB进行聚合处理|畅享MongoDB数据库的轻松体验
▼mongoDBの集計にはMapReduceよりaggregateが簡単で楽な件
http://chobi.hatenablog.jp/entry/2013/06/16/201152
▼进行MongoDB聚合处理 (3) (聚合框架)
http://blog.zdrv.com/archives/457
▼SQL 到 Aggregation 的映射图表
请参考文档:http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/
这就是以上的内容。