【问题标题】: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;