如何使用2.4 C#Mongo驱动程序运行解释查询?

时间:2018-03-27 07:32:32

标签: c# mongodb

很久以前使用较旧版本的Mongo C#驱动程序,就可以做到这一点(我完全忘了)。

collection.FindOne(query).Explain()

这将使用cursor.explain()提供查询执行,使用的索引等的详细信息。现在我们正在使用2.4,并希望将解释用于我们的一个查询。

我发现与此有关的唯一问题是this one,但使用的驱动程序似乎又有所不同。

如何使用2.4 C#驱动程序运行解释查询?

1 个答案:

答案 0 :(得分:2)

根据issue on MongoDB's JIRA页面,它已作为开箱即用的功能从API中删除。

  

解释是/经历了一些更改并在完成之前将其添加到驱动程序将是一个错误。此外,我们认为大多数解释都发生在shell而不是驱动程序中。因此,我们未将解释作为API的一部分。

幸运的是,通过在FindOptions中提供查询修饰符仍然可以:

var options = new FindOptions
{
    Modifiers = new BsonDocument("$explain", true)
};
var explain = await collection.Find(x => true, options)
    .Project(new BsonDocument())
    .FirstOrDefault()
    ?.ToJson();

只需将x => true替换为您要分析的查询即可。我添加了.ToJson()以获得一个很好的人类可读的JSON字符串。