mongoシェルでfollowmongodbコマンドを実行します
db.coll.aggregate(...)
結果のリストが表示されます。しかし、クエリの実行時間を確認することは可能ですか?集計クエリのexplainメソッドに相当する関数はありますか?
mongoシェルでfollowmongodbコマンドを実行します
db.coll.aggregate(...)
結果のリストが表示されます。しかし、クエリの実行時間を確認することは可能ですか?集計クエリのexplainメソッドに相当する関数はありますか?
var before = new Date()
#aggregation query
var after = new Date()
execution_mills = after - before
(ホームディレクトリ内の)ファイルにtime
関数を追加できます。.mongorc.js
function time(command) {
const t1 = new Date();
const result = command();
const t2 = new Date();
print("time: " + (t2 - t1) + "ms");
return result;
}
そして、あなたはそれを次のように使うことができます:
time(() => db.coll.aggregate(...))
注意
この方法では、関連する結果は得られませんdb.collection.find()
mongodbでは、次の2つのコマンドを使用できる可能性があります。
db.setProfilingLevel(2)
したがって、クエリの後で、db.system.profile.find()を使用して、クエリの実行時間などを確認できます。
または、優れたmongo-hackerをインストールすることもできます。このハッカーは、すべてのクエリの時間を自動的に計測し、それを処理pretty()
し、出力に色を付け、キーを並べ替えます。
これをよりよく説明するための答えを書きます。
基本的に、集約フレームワークのexplain()機能はまだありません:https ://jira.mongodb.org/browse/SERVER-4504
ただし、クライアント側を測定する方法はありますが、欠点がないわけではありません。
mongos
ただし、 /と同じサーバー上のMongoDBコンソールで実行すると、わずかに正確な結果が得られる場合がありますmongod
。これにより、間にはほとんど作成されませんが、それでも多すぎますが、大まかに信頼できる読み物を取得するには十分です。そのため、その位置で@Zagorulkinの回答を使用できます。