====== 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 押下