====== Aggregation Framework ======
公式manual:http://docs.mongodb.org/manual/core/aggregation/
===== sample =====
sqldump テーブルには、SQL文(query)と実行時間(time_sum)が記録されている。
SQL文毎の実行時間の平均でソートして、平均時間の長いものから10件取得したい。
* sql query
select
avg(time_sum) as time_avg
from
sqldump
group by
query
order by
avg(time_sum) desc
limit
10
* mongo query
db.sqldump.aggregate(
{ $project : { "query" : 1, "time_sum" : 1 } },
{ $group : { "_id":"$query", "time_avg" : { "$avg" : "$time_sum" } } },
{ $sort : { "time_avg" : -1 } },
{ $limit : 10 }
);
===== 上記サンプルを RockMongo で実行したい =====
- Tools - Command
- query を以下のように修正して入力
{
aggregate : "sqldump", pipeline : [
{ $project : { "query" : 1, "time_sum" : 1 } },
{ $group : { "_id":"$query", "time_avg" : { "$avg" : "$time_sum" } } },
{ $sort : { "time_avg" : -1 } },
{ $limit : 10 }
]
}
- DB: 対象DBを選択する
- Execute 押下