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

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 コマンドを使う以外のやり方をご存知でしたら教えて下さい。

参考情報