文档菜单
文档首页
/ / /
C#/.NET
/ /

运行数据库命令

本页内容

  • 概述
  • 示例数据
  • 执行命令
  • 设置读取优先级
  • 响应
  • 示例
  • 更多信息
  • API 文档

在本指南中,您可以学习如何使用 .NET/C# 驱动程序运行数据库命令。您可以使用数据库命令执行各种管理和诊断任务,例如获取服务器统计信息、初始化副本集或运行聚合管道。

重要

优先使用驱动程序方法而不是数据库命令

驱动程序为许多数据库命令提供了包装方法。如果可能,我们建议使用这些方法而不是执行数据库命令。

要执行管理任务,请使用MongoDB Shell 而不是 .NET/C# 驱动程序。Shell 提供了一些可能在驱动程序中不可用的辅助方法。

如果驱动程序或 Shell 中没有可用的辅助方法,您可以使用db.runCommand() Shell 方法或驱动程序的 RunCommand()RunCommandAsync() 方法,这些方法在本指南中有所描述。

本指南中的示例使用来自 Atlas 示例数据集sample_restaurants.restaurants 集合。有关如何创建免费的 MongoDB Atlas 集群并加载示例数据集的信息,请参阅快速入门.

要运行数据库命令,创建一个指定命令的 BsonDocument 对象,并将其作为参数传递给 RunCommand()RunCommandAsync() 方法。您可以通过指定类型参数来指定这些方法返回的类型。您可以使用 BsonDocument 类型来返回命令响应,或者指定您自己的强类型类以反序列化命令响应。

以下示例在一个数据库上运行 hello 命令,该命令返回有关服务器的信息。选择异步同步选项卡以查看相应的代码。

var command = new BsonDocument("hello", 1);
var result = await database.RunCommandAsync<BsonDocument>(command);
var command = new BsonDocument("hello", 1);
var result = database.RunCommand<BsonDocument>(command);

提示

要查看数据库命令及其对应参数的完整列表,请参阅 MongoDB 服务器手册中的数据库命令

RunCommand() 方法不会继承您可能已在 MongoDatabase 实例上设置的读取偏好。默认情况下,RunCommand() 使用 primary 读取偏好。

您可以通过将 ReadPreference 实例作为参数传递给 RunCommand() 来为命令执行设置读取偏好,如下例所示。选择异步同步选项卡以查看相应的代码。

var command = new BsonDocument("hello", 1);
var result = await database.RunCommandAsync<BsonDocument>(command, ReadPreference.Secondary);
var command = new BsonDocument("hello", 1);
var result = database.RunCommand<BsonDocument>(command, ReadPreference.Secondary);

提示

有关读取偏好选项的更多信息,请参阅 MongoDB 服务器手册中的读取偏好

RunCommand() 方法返回的原始命令响应文档包含以下字段

字段
描述

<命令结果>

特定于数据库命令的字段。例如,hello 命令返回 topologyVersion 字段。

ok

指示命令是否成功(1.0)或失败(0.0)。如果 ok 的值为 0.0,则驱动程序会抛出 MongoCommandException

$clusterTime

包含签名集群时间的文档。集群时间是用于操作排序的逻辑时间。此字段仅适用于在副本集或分片集群上运行的命令。

operationTime

操作执行的逻辑时间。此字段仅适用于在副本集或分片集群上运行的命令。

以下示例运行dbStats命令以检索sample_restaurants数据库的存储统计信息,然后通过在返回的BsonDocument对象上使用ToJson()方法来打印命令结果。选择异步同步选项卡以查看相应的代码。

var command = new BsonDocument("dbStats", 1);
var result = await database.RunCommandAsync<BsonDocument>(command);
Console.WriteLine(result.ToJson());
var command = new BsonDocument("dbStats", 1);
var result = database.RunCommand<BsonDocument>(command);
Console.WriteLine(result.ToJson());

此命令的输出包括有关数据库中存储的数据的信息,如前一个示例返回的结果所示

{ "db" : "sample_restaurants", "collections" : 2, "views" : 0, "objects" :
NumberLong(25438), "avgObjSize" : 548.95172576460413, "dataSize" : NumberLong(13964234),
"storageSize" : NumberLong(8056832), "totalFreeStorageSize" : NumberLong(0),
"numExtents" : NumberLong(0), "indexes" : 2, "indexSize" : NumberLong(1044480),
"indexFreeStorageSize" : NumberLong(0), "fileSize" : NumberLong(0), "nsSizeMB" : 0, "ok" : 1 }

有关本指南中概念的更多信息,请参阅MongoDB服务器手册中的以下文档

有关本指南中讨论的任何方法或类型的更多信息,请参阅以下API文档

返回

数据库与集合