CreateUser 使用 mongocxx 3.1.1 C++ 失败



在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

  1. 请参阅数据库命令手册,了解驱动程序中的可用命令和参数。
  2. mongo Shell 方法文档描述了通过 shell 与 MongoDB 服务器交互的方法、命令和参数mongo

最新更新