ユーザ用ツール

サイト用ツール


mongodb:aggregation

Aggregation Framework

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 で実行したい

  1. Tools - Command
  2. query を以下のように修正して入力
    {
        aggregate : "sqldump", pipeline : [
            { $project : { "query" : 1, "time_sum" : 1 } },
            { $group   : { "_id":"$query", "time_avg" : { "$avg" : "$time_sum" } } },
            { $sort    : { "time_avg" : -1 } },
            { $limit   : 10 }
        ] 
    }
  3. DB: 対象DBを選択する
  4. Execute 押下
mongodb/aggregation.txt · 最終更新: 2013/04/18 10:18 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki