Драйвер MongoDB C# не удалось запустить команду базы данных аутентификации

Я хочу пройти аутентификацию в MongoDB с помощью C#, не передавая строку подключения / учетные данные на MongoClient() пример. Как будто мы делаем это в MongoDB Shell, мы называем monog -> db.auth(<username>,<password>) это значит сначала подключиться к базе данных, а затем пройти аутентификацию.

  1. Написать код C#
    Это мой код:

    var mongoClient = new MongoClient();
    var testDB = mongoClient.GetDatabase("test");
    
    string username = txtUserName.Text;
    string password = txtPassword.Password;
    
    // Check password
    var cmd = new BsonDocument("authenticate", new BsonDocument
    {
        {"username",username },
        {"password",password }
    });
    
    var queryResult = testDB.RunCommand<BsonDocument>(cmd);
    

    Мой код подключается к MongoDB и вызывает команду Database для аутентификации ( описано здесь. Это не db.auth() Shell метод), чтобы войти с ним

  2. Запустите MongoDB с помощью --auth вариант.

  3. Запустите мой код.

После шага 3 я столкнулся с этой проблемой. Мой код сказать

Дополнительная информация: Ошибка команды проверки подлинности: поле отсутствует / неверный тип в полученной команде проверки подлинности.

Я прочитал документы MongoDB (также ссылку, которую я добавил выше), я не могу найти то, что мне не хватало.

1 ответ

Я думаю, что вы можете использовать JsonCommand звонить eval функция для выполнения db.auth функция как это - не проверено -:

var command = new JsonCommand<BsonDocument>(@"{ eval: ""db.auth(\""username\"", \""password\"");"" }");
var result = db.RunCommand(command);
Другие вопросы по тегам