1

在 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”的类型错误。预期的字符串,找到的对象:通用服务器错误。

我找不到生成正确文档的语法。任何想法?

4

1 回答 1

2

根据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 帮助程序与驱动程序中的“运行命令”等效项并不完全相同。db.runCommand如果您想尝试使用驱动程序在database::run_command.

  1. 请参阅数据库命令手册以获取驱动程序中可用的命令和参数。
  2. mongoShell 方法文档mongo描述了通过shell与 MongoDB 服务器交互的方法、命令和参数。
于 2017-06-30T07:16:41.100 回答