explain
で実行する方法はありrunCommand
ますか? 次のクエリがあります。
db.runCommand({geoNear:"Locations", near:[50,50], spherical:true})
どうすれば実行できexplain
ますか?実行時間を取得したい。
explain
で実行する方法はありrunCommand
ますか? 次のクエリがあります。
db.runCommand({geoNear:"Locations", near:[50,50], spherical:true})
どうすれば実行できexplain
ますか?実行時間を取得したい。
私の知る限り、explain
カーソルのメソッドです。ただし、統合された mongodb プロファイラーを有効にすることができます。
db.setProfilingLevel(2); // log all operations
db.setProfilingLevel(1, 50); // log all operations longer than 50msecs
これにより、 などの詳細が というキャップ付きコレクションに記録nscanned
さnreturned
れますが、呼び出しsystem.profile
ほど詳細は提供されません。explain()
ただし、この場合runCommand
、代わりに$near
-query に変更することは可能でしょうか? これにより、 へのフル アクセスが可能になりexplain
ます。
両方の答え (からmnemosyn
とAbhishek Kumar
) は正しいです。
ただし、実行時間を確認したいだけの場合 (私のように)、これはいくつかの追加の統計と共に結果に表示されます。
...
"stats" : {
"time" : 2689,
"btreelocs" : 0,
"nscanned" : 1855690,
"objectsLoaded" : 979,
"avgDistance" : 0.006218027001875209,
"maxDistance" : 0.006218342348749806
},
"ok" : 1
まあ、質問を投稿する前にもっとよく見るべきでした:)。
ではないかもしれませんがrunCommand
、私は次のようなものを使用しています:
expStats = function() {
var exp = db.collection.find({"stats.0.age" : 10},{"stats.age" : 1}).explain("allPlansExecution");
print ("totalDocsExamined = "+exp.executionStats.totalDocsExamined);
print ("nReturned = "+exp.executionStats.nReturned);
return print ("execTime = "+exp.executionStats.executionTimeMillis);
}