在Windows 10上使用MongoDB服务器3.4.4,以下命令工作正常:
db.createUser(
{
user: "Billy",
pwd : "123456",
roles :
[
{ role: "userAdmin", db : "biolomics_index" },
{ role: "dbAdmin", db : "biolomics_index" },
{ role: "readWrite", db : "biolomics_index" }
]
}
使用 mongocxx 3.1.1 C++驱动程序运行相同的命令失败:
db.run_command(document{} << "createUser" << open_document <<
"user" << "Billy" <<
"pwd" << "123456" <<
"roles" << open_array <<
open_document << "role" << "userAdmin" << "db" << "biolomics_index" << close_document <<
open_document << "role" << "dbAdmin" << "db" << "biolomics_index" << close_document <<
open_document << "role" << "readWrite" << "db" << "biolomics_index" << close_document <<
close_array << close_document <<
finalize);
出现错误:
"createUser"的类型错误。预期的字符串,找到的对象: 一般服务器错误。
我找不到生成正确文档的语法。知道吗?
根据createUser
文档,用户名应作为值createUser
而不是user
字段放置。将代码更改为:
db.run_command(document{} <<
"createUser" << "Billy" <<
"pwd" << "123456" <<
"roles" << open_array <<
open_document << "role" << "userAdmin" << "db" << "biolomics_index" << close_document <<
open_document << "role" << "dbAdmin" << "db" << "biolomics_index" << close_document <<
open_document << "role" << "readWrite" << "db" << "biolomics_index" << close_document <<
close_array <<
finalize);
注意:
正如Saghm在评论中提到的,MongoDB shell助手与驱动程序中的"run command"等效项并不完全相同。如果您想使用驱动程序在 database::run_command
中要求的相同 BSON 进行尝试,则可以使用 shell 的 db.runCommand
。
- 请参阅数据库命令手册,了解驱动程序中的可用命令和参数。
mongo
Shell 方法文档描述了通过 shell 与 MongoDB 服务器交互的方法、命令和参数mongo
。