13

.explain()Linqクエリで実行または同等の方法はありますか?知りたい

  • 実際のJSONクエリのテキスト
  • .explain()(使用されるインデックスなど)の出力
  • クエリの実行時間があると便利です
4

4 に答える 4

12

クエリ ラッパーがあれば、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()
于 2012-11-07T00:00:26.923 に答える
5

ライブラリでこの機能が必要な場合は、GitHub プロジェクトを作成しました。

.NET 用の MongoDB クエリ ヘルパー

https://github.com/mikeckennedy/mongodb-query-helper-for-dotnet

そうなる:

  • LINQ クエリを厳密に型指定されたオブジェクトとして説明する(たとえば、インデックスを使用するか)
  • LINQ クエリを MongoDB で実行される JavaScript コードに変換する

それをチェックして、面白いと思ったら投稿してください。

于 2014-03-06T00:53:28.897 に答える