[MongoDB] aggregate の実行時間を確認する方法
mongo shell で db.collection.aggregate() の実行時間を確認するコマンドをご紹介します。
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 コマンドを使う以外のやり方をご存知でしたら教えて下さい。