mongodb — CreateUser не работает с использованием mongocxx 3.1.1 Переполнение стека

Используя сервер MongoDB 3.4.4 в Windows 10, следующая команда работает просто отлично:

db.createUser(
{
user: "Billy",
pwd : "123456",
roles :
[
{ role: "userAdmin", db : "biolomics_index" },
{ role: "dbAdmin", db : "biolomics_index" },
{ role: "readWrite", db : "biolomics_index" }
]
}

Выполнение той же команды с драйверами C ++ mongocxx 3.1.1 завершается неудачно:

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» имел неправильный тип. Ожидаемая строка, найденный объект:
общая ошибка сервера.

Я не могу найти синтаксис для создания правильного документа. Любая идея?

1

Решение

Согласно 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 — это не то же самое, что эквиваленты «run command» в драйверах. Вы можете использовать оболочку db.runCommand если вы хотите испытать вещи с тем же BSON, который требуется в драйвере database::run_command,

  1. Консультирует Руководство по командам базы данных для доступных команд и параметров из драйвера.
  2. mongo Документация по методам оболочки описывает методы, команды и параметры для взаимодействия с сервером MongoDB через mongo ракушка.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]