Docs 菜单
Docs 主页
/ / /
Ruby 驱动程序
/

运行数据库命令

在本指南中,您可以学习;了解如何使用Ruby驾驶员来运行数据库命令。您可以使用数据库命令执行各种管理和诊断任务,例如获取服务器统计信息、初始化副本集或运行聚合管道。

重要

首选驱动程序方法而非数据库命令

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

要执行管理任务,请使用 MongoDB Shell 而不是Ruby驾驶员。Shell提供了驾驶员中可能不可用的辅助方法。

如果驾驶员或Shell中没有可用的助手,则可以使用 db.runCommand() Shell方法或驱动程序的 command 方法,如本指南中所述。

本指南中的示例使用Atlas示例数据集中的 sample_restaurants数据库。要从Ruby应用程序访问权限此数据库,请创建一个连接到Atlas 集群的Mongo::Client对象,并将以下值分配给 database 变量:

database = client.use('sample_restaurants')

要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅Atlas入门指南。

要运行数据库命令,运行Mongo::Database实例的 command实例方法,并将要运行的操作名称作为参数传递给该方法。

以下示例调用 command 方法来运行hello 命令,该命令会返回有关服务器的信息:

client.database.command(hello: 1)

提示

要查看数据库命令及其相应参数的完整列表,请参阅MongoDB Server手册中的数据库命令。

command 方法不会继承您可能在 Database实例上设立的读取偏好(read preference)。 默认下,command 使用 primary读取偏好(read preference)。

您可以通过将 :read 选项传递给 command 方法来设立命令执行的读取偏好(read preference),如以下代码所示:

client.database.command({hello: 1}, read: {mode: :secondary})

提示

要学习;了解有关读取偏好(read preference)选项的更多信息,请参阅MongoDB Server手册中的读取偏好

command 方法返回 Mongo::Operation::Result,其中包含数据库对给定命令的响应。

您可以使用以下方法访问权限原始命令响应文档的字段:

方法
说明

acknowledged?

如果服务器确认该命令,则返回 true,否则返回 false

inspect

返回命令响应的格式化字符串表示形式。

ok?

如果命令成功,则返回 true,否则返回 false。如果 ok? 方法返回 false,则驾驶员将引发 Mongo::Error::OperationFailure

cluster_time

返回服务器响应中报告的集群时间。集群时间是用于对操作进行排序的逻辑时间。此字段仅适用于在副本集或分片集群上运行的命令。

operation_time

返回操作执行的逻辑时间。

有关 Result对象可用方法的完整列表,请参阅API文档。

提示

以下示例运行 dbStats 命令来检索sample_restaurants数据库的存储统计信息,然后使用 inspect 方法打印命令结果:

puts client.database.command({dbStats: 1}).first

此命令的输出包括数据库中存储的数据的信息,如以下代码所示:

{"db"=>"sample_restaurants", "collections"=>4, "views"=>0, "objects"=>18767, "avgObjSize"=>596.1911866574306,
"dataSize"=>11188720, "storageSize"=>7528448, "totalFreeStorageSize"=>0, "numExtents"=>0, "indexes"=>6,
"indexSize"=>1519616, "indexFreeStorageSize"=>0, "fileSize"=>0, "nsSizeMB"=>0, "ok"=>1}

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

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档:

后退

数据库和collection

在此页面上