[MongoDB] aggregate の実行時間を確認する方法

Tadashi Shigeoka ·  Tue, December 16, 2014

mongo shell で db.collection.aggregate() の実行時間を確認するコマンドをご紹介します。

MongoDB | モンゴディービー

time mongo dbname --eval 'query' で実行時間を確認する

bash や zsh などから time コマンドを使って mongo —eval でクエリを渡して、実行時間を確認しました。

$ time mongo dbname --eval 'db.orders.aggregate([ { $match: { customer_id: "abcdefg", payment_system: "paypal" } } , { $group: { _id: "$user" } } ])'
MongoDB shell version: 2.6.5
connecting to: dbname
[object Object]

real  0m0.120s
user  0m0.044s
sys  0m0.004s

aggregate の explain オプションではダメなのか?

db.collection.aggregate(pipeline, options) の第二引数に explain を Boolean で指定できます。

しかし、これは db.collection.find().explain() の実行結果とは少し違うみたいで、実行時間については確認できませんでした。

  db.users.aggregate( [ ], { explain: true } )
{
  "stages" : [
    {
      "$cursor" : {
        "query" : {
          
        },
        "plan" : {
          "cursor" : "BasicCursor",
          "isMultiKey" : false,
          "scanAndOrder" : false,
          "allPlans" : [
            {
              "cursor" : "BasicCursor",
              "isMultiKey" : false,
              "scanAndOrder" : false
            }
          ]
        }
      }
    }
  ],
  "ok" : 1
}

time コマンドを使う以外のやり方をご存知でしたら教えて下さい。

参考情報