Mongodb c# 驱动程序:查看从 linq 生成的 MQL bson 查询

Mongodb c# driver: view MQL bson query generated from linq

使用最新版本(2.14)有没有办法查看特定linq查询生成的bson查询文档?

我想这样做有两个原因:

  1. 调试查询
  2. 将它们复制到另一个 mongo 客户端中的 运行,例如 compass

我知道我可以启用分析,但我看不出有什么方法可以保证您在 mongo 日志中找到的查询是由特定代码行或查询生成的。另外,通过分析来完成它有点冗长。

您有 2 个选项可以从 LINQ 请求中获取 MQL 查询:

  1. 安装最近发布的查询analyzer。据我所知,如果您使用全局静态序列化配置,它可能不是 100% 准确。
  2. 配置CommandStartedEvent事件subscriber并分析Command文档。请注意,您可能需要删除一些可能无法被罗盘正确解析的技术字段,例如 $db(可能更多),如果有的话,您将在异常消息中看到它。

@dododo 的答案是正确的,也是最好的答案,我只是在这里添加一些适用于选项 2 的代码:

    var settings = MongoClientSettings.FromUrl(new MongoUrl(@"mongodb://localhost"));
    settings.ClusterConfigurator = builder =>
    {
        builder.Subscribe<CommandStartedEvent>(x =>
        {
            var queryDocument = x.Command;
        });
    };

    var client =  new MongoClient(settings);