Overview
在本指南中,您可以学习如何使用C++驱动程序运行数据库命令。您可以使用数据库命令执行各种管理和诊断任务,例如获取服务器统计信息、初始化副本集或运行聚合管道。
重要
首选驱动程序方法而非数据库命令
驱动程序为许多数据库命令提供了封装方法。我们建议尽可能使用驱动程序方法,而不是执行数据库命令。
要执行管理任务,请使用MongoDB Shell而不是C++驾驶员。在Shell内调用db.runCommand() 方法是发出数据库命令的首选方法,因为它在Shell和驱动程序之间提供了一致的接口。
执行命令
要运行数据库命令,请在 mongocxx::database实例上调用 run_command() 执行方法,并传入指定该命令和所有相关参数的文档。 该方法会以 bsoncxx::document::value对象的形式返回该命令的结果。
可以将 run_command() 方法应用于任何数据库命令。有关数据库命令及其对应参数的完整列表,请参阅MongoDB Server手册中的数据库命令。
以下示例展示如何使用 run_command() 方法在数据库上运行hello 命令,该命令会返回有关副本集集中当前成员角色的信息:
auto db = client["my_database"]; auto command = make_document(kvp("hello" , 1)); auto result = db.run_command(command.view()); std::cout << bsoncxx::to_json(result) << std::endl;
命令选项
要自定义命令执行行为,您可以在传递给 run_command() 方法的命令文档中设置选项。要详细了解某个命令及其接受的选项,请找到该命令,并按照 MongoDB Server 手册中数据库命令页面上的相应链接进行操作。
示例,您可以通过在命令文档中将 showPrivileges 选项设置为 true,指示 connectionStatus 命令返回当前经过身份验证的用户拥有的完整权限设立:
auto db = client["my_database"]; auto command = make_document(kvp("connectionStatus" , 1), kvp("showPrivileges", true)); auto result = db.run_command(command.view()); std::cout << bsoncxx::to_json(result) << std::endl;
响应
执行命令后,run_command() 方法会返回一个 bsoncxx::document::value对象,其中包含数据库的响应。 每个数据库命令执行不同的功能,因此响应内容可能因命令而异。 但是,每个响应都包含具有以下字段的文档:
字段 | 说明 |
|---|---|
<command result> | 提供特定于数据库命令的字段。例如, |
| 表明命令是成功( |
| 指示操作的逻辑时间。 MongoDB 使用逻辑时间对操作进行排序。 |
| 提供返回签名集群时间的文档。 集群时间是用于操作排序的逻辑时间。 该文档包含以下字段:
|
更多信息
有关本指南中概念的更多信息,请参阅以下文档:
要进一步了解本指南所讨论的方法或类型,请参阅以下 API 文档: