.explain()
Linqクエリで実行または同等の方法はありますか?知りたい
- 実際のJSONクエリのテキスト
.explain()
(使用されるインデックスなど)の出力- クエリの実行時間があると便利です
.explain()
Linqクエリで実行または同等の方法はありますか?知りたい
.explain()
(使用されるインデックスなど)の出力クエリ ラッパーがあれば、Json を簡単に取得できます。
var qLinq = Query<T>.Where(x => x.name=="jim");
Console.WriteLine(qLinq.ToJson());
MongoCursor には Explain() メソッドもあるので、これを行うことができます。
var exp = Collection.FindAs<T>(qLinq).Explain()
Console.WriteLine(exp.ToJson());
したがって、所要時間が必要な場合は、「ミリ秒」がそこにあります。
var msTaken = exp.First(x => x.Name == "millis").Value.AsInt32;
がある場合は、次のIQueryable
ようなことを試してください。
void Do(MongoCollection col, IQueryable iq)
{
// Json Mongo Query
var imq = (iq as MongoQueryable<Blob>).GetMongoQuery();
Console.WriteLine(imq.ToString());
// you could also just do;
// var cursor = col.FindAs(typeof(Blob), imq);
var cursor = MongoCursor.Create(typeof(Blob), col, imq, ReadPreference.Nearest);
var explainDoc = cursor.Explain();
Console.WriteLine(explainDoc);
}//Do()
ライブラリでこの機能が必要な場合は、GitHub プロジェクトを作成しました。
.NET 用の MongoDB クエリ ヘルパー
https://github.com/mikeckennedy/mongodb-query-helper-for-dotnet
そうなる:
それをチェックして、面白いと思ったら投稿してください。