Как вы выполняете db.collection.explain () в C # драйвер 2.7.0 на Mongo Server 4.0? - PullRequest
0 голосов
/ 06 сентября 2018

Ответы MongoDB - невозможно использовать .explain () для получения информации о запросе в коде C #? или Существует ли "запрос объяснения" для MongoDB Linq? устарели, а классы и методы больше не существуют в последних версиях драйвера C #.

1 Ответ

0 голосов
/ 11 июня 2019

В качестве обходного пути я смог использовать синтаксис find с перегрузкой параметров для запуска объяснения запросов, которые я хотел настроить.

    [Fact]
    public async Task Metrics()
    {
        var options = new FindOptions
        {
            Modifiers = new BsonDocument("$explain", true)
        };
        var queryable = await MongoDb.Collection.Find("{ Paid: false}", options).As<StatsBsonDocument>().ToListAsync(); // StatsBsonDocument BsonDocument  
        //Console.WriteLine(queryable.First());
        queryable.First().GetStats();            
    }



public class StatsBsonDocument
{
    public dynamic queryPlanner { get; set; }
    public ExecutionStats executionStats { get; set; }
    public dynamic serverInfo { get; set; }

    public void GetStats()
    {
        try
        {
            Console.WriteLine($"{queryPlanner.winningPlan.inputStage.stage}");
        }
        catch (Exception e)
        {
            Console.WriteLine($"executionSuccess {executionStats.executionSuccess}, stage {queryPlanner.winningPlan.stage},");
        }
        Console.WriteLine($"{executionStats.nReturned} returned documents, {executionStats.executionTimeMillis}ms execution");
        Console.WriteLine($"{executionStats.totalKeysExamined} keys examined , {executionStats.totalDocsExamined} documents examined");
        Console.WriteLine($"index vs returned {(decimal)executionStats.totalKeysExamined / executionStats.nReturned}, " +
        $"scanned documents/returned {(decimal)executionStats.totalDocsExamined / executionStats.nReturned}");
        Console.WriteLine();

        // AND_SORTED stage or an AND_HASH stage. index intersection
    }
}

public class QueryPlanner
{
    public dynamic plannerVersion;
    public string Namespace;
    public dynamic indexFilterSet;
    public dynamic parsedQuery;
    public dynamic winningPlan;
    public dynamic rejectedPlans;
}

public class ExecutionStats
{
    public bool executionSuccess;
    public int nReturned;
    public int executionTimeMillis;
    public int totalKeysExamined;
    public int totalDocsExamined;
    public dynamic executionStages;
    public dynamic allPlansExecution;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...