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

问题描述 投票:0回答:2

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

我想这样做有两个原因:

  1. 调试查询
  2. 复制它们以在另一个 mongo 客户端(如指南针)中运行

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

c# mongodb linq mongodb-.net-driver
2个回答
3
投票

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

  1. 安装最近发布的查询分析器。据我所知,如果您使用全局静态序列化配置,它可能不是 100% 准确。
  2. 配置
    CommandStartedEvent
    事件订阅者并分析
    Command
    文档。请注意,您可能需要删除一些可能无法被指南针正确解析的技术字段,例如
    $db
    (可能更多),您将在异常消息中看到它(如果有)。 更新:
  3. 您还可以使用
    ILogger
    实现。您可以在这里找到详细信息

2
投票

@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);
© www.soinside.com 2019 - 2024. All rights reserved.