【问题标题】:MongoDB C# Driver: Execute Database Method through the SDK?MongoDB C# 驱动程序:通过 SDK 执行数据库方法?
【发布时间】:2023-03-30 10:59:01
【问题描述】:

我希望能够使用 C# SDK (2.2.4) 执行 database method。以db.version() 为例。

我尝试过使用Database.RunCommand,但没有成功:

var command = new BsonDocumentCommand<BsonDocument>(new BsonDocument
{
    { "version", 1 }
});

var versionResult = Database.RunCommand(command);

例外:

MongoDB.Driver.MongoCommandException:命令版本失败:没有这样的 命令:'version',错误的 cmd:'{ version: 1 }'。

【问题讨论】:

    标签: mongodb mongodb-query mongodb-.net-driver


    【解决方案1】:

    我可以使用上述方法获取 dbstats,但不能获取版本。 (在 mongo shell 和 .net 中)

    但是如果我尝试在 mongo shell 中以这种方式获取版本,我会得到同样的错误

    db.runCommand({version:1})
    {
        "ok" : 0,
        "errmsg" : "no such command: 'version', bad cmd: '{ version: 1.0 }'",
        "code" : 59
    }
    

    似乎有不同的方式来获取版本?因为 runCommand 支持 Mongo shell 支持的操作?

    【讨论】:

      【解决方案2】:

      在您链接到的 shell 数据库方法和通过 Database.RunCommand 可用的底层数据库命令之间并不总是存在直接映射。可用的命令列在here,要获取服务器版本,您可以使用serverStatus 命令:

      var version = db.RunCommand<dynamic>(new BsonDocument("serverStatus", 1)).version;
      

      【讨论】:

        猜你喜欢
        • 2011-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-13
        • 1970-01-01
        • 2013-01-05
        • 2015-11-01
        • 1970-01-01
        相关资源
        最近更新 更多