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