Docs 菜单
Docs 主页
/ / /
Scala
/

运行数据库命令

在此页面上

  • Overview
  • 样本数据
  • 执行命令
  • 设置读取偏好
  • 响应
  • 例子
  • 更多信息
  • API 文档

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

重要

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

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

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

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

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

val database: MongoDatabase = mongoClient.getDatabase("sample_restaurants")

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

要运行数据库命令,请创建指定该命令的 Document对象,并将其作为参数传递给 runCommand() 方法。此方法返回一个 SingleObservable实例,您可以订阅此可观察量以执行命令并访问权限命令结果。

以下示例对数据库调用 runCommand() 方法来运行hello 命令,该命令会返回有关服务器的信息:

database.runCommand(Document("hello" -> 1))
.subscribe((doc: Document) => ())

提示

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

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

您可以通过将 ReadPreference实例作为参数传递给 runCommand()设立命令执行的读取偏好(read preference),如以下代码所示:

database.runCommand(Document("hello" -> 1), ReadPreference.secondary())
.subscribe((doc: Document) => ())

提示

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

runCommand() 方法返回 SingleObservable,其中包含数据库对给定命令的响应。您可以对可观察量调用 subscribe() 方法来运行命令并以文档形式访问权限响应。

原始命令响应文档包含以下字段:

字段
说明

<command result>

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

ok

指示命令是成功 (1.0) 还是失败 (0.0)。如果 ok 值为 0.0,则驾驶员会引发 MongoCommandException

$clusterTime

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

operationTime

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

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

database.runCommand(Document("dbStats" -> 1))
.subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))

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

{"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