Overview
在本指南中,您可以学习;了解如何使用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)
设置读取偏好
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
,其中包含数据库对给定命令的响应。
您可以使用以下方法访问权限原始命令响应文档的字段:
方法 | 说明 |
---|---|
| 如果服务器确认该命令,则返回 |
| 返回命令响应的格式化字符串表示形式。 |
| 如果命令成功,则返回 |
| 返回服务器响应中报告的集群时间。集群时间是用于对操作进行排序的逻辑时间。此字段仅适用于在副本集或分片集群上运行的命令。 |
| 返回操作执行的逻辑时间。 |
有关 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 文档
要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: