3

explainで実行する方法はありrunCommandますか? 次のクエリがあります。

db.runCommand({geoNear:"Locations", near:[50,50], spherical:true})

どうすれば実行できexplainますか?実行時間を取得したい。

4

5 に答える 5

1

私の知る限り、explainカーソルのメソッドです。ただし、統合された mongodb プロファイラーを有効にすることができます。

db.setProfilingLevel(2); // log all operations
db.setProfilingLevel(1, 50); // log all operations longer than 50msecs

これにより、 などの詳細が というキャップ付きコレクションに記録nscannednreturnedれますが、呼び出しsystem.profileほど詳細は提供されません。explain()

ただし、この場合runCommand、代わりに$near-query に変更することは可能でしょうか? これにより、 へのフル アクセスが可能になりexplainます。

于 2013-06-27T10:25:35.173 に答える
0

両方の答え (からmnemosynAbhishek Kumar) は正しいです。

ただし、実行時間を確認したいだけの場合 (私のように)、これはいくつかの追加の統計と共に結果に表示されます。

...
"stats" : {
        "time" : 2689,
        "btreelocs" : 0,
        "nscanned" : 1855690,
        "objectsLoaded" : 979,
        "avgDistance" : 0.006218027001875209,
        "maxDistance" : 0.006218342348749806
},
"ok" : 1

まあ、質問を投稿する前にもっとよく見るべきでした:)。

于 2013-06-27T12:04:20.323 に答える
-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);
}
于 2016-05-23T16:07:29.983 に答える