如何在MongoDB中创建用户

ief*_*fpw 5 mongodb mongodb-.net-driver

我正在使用最新版本的驱动程序和MongoDB数据库2.6,我曾使用以下代码创建用户:

        MongoUser _user1 = new MongoUser("username", "password", false);

        MongoDatabase.AddUser(_user1);
Run Code Online (Sandbox Code Playgroud)

现在可以说MongoDatabase.AddUser()通过显示以下信息而被弃用:

...已过时:使用新的用户管理命令'createUser'或'updateUser'."

这个新的用户管理命令在哪里?如何使用新的MongoDB C#驱动程序创建用户?

小智 5

对于有兴趣使用C#v2.0.1驱动程序和MongoDB v3.0.6创建用户的用户,请使用以下命令:

var client = new MongoClient(connectionString);
var database = client.GetDatabase("database_to_create_user_in");
var user = new BsonDocument { { "createUser", "fred" }, { "pwd", "some_secure_password" }, { "roles", new BsonArray { new BsonDocument { { "role", "read" }, { "db", "database_to_create_user_in" } } } } };
await database.RunCommandAsync<BsonDocument>(user);
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 0

我在 GitHub 存储库上的最新代码上搜索了“createUser”: https://github.com/mongodb/mongo-csharp-driver/search ?q=createUser&ref=cmdform

在撰写本文时,对“createUser”的唯一引用是在这里

然而,在这次提交中,该方法已被标记为过时

然而; 仔细检查代码,我看到了这一点

if (_server.RequestConnection.ServerInstance.Supports(FeatureId.UserManagementCommands))
    {
        AddUserWithUserManagementCommands(user);
    }
    else
    {
       AddUserWithInsert(user);
    }
Run Code Online (Sandbox Code Playgroud)

所以,它正在幕后调用所需的方法