有可能在Java中创建一个具有多个角色的MongoDb用户吗



我正试图添加一个方法,使用javaMongoClient在mongodb中创建一个新用户。我发现(从其他线程(唯一有效的实现是:

final MongoDatabase db = mongoClient.getDatabase("admin");
final BasicDBObject createUserCommand = new BasicDBObject("createUser", "testUser").append("pwd", "password").append("roles",
Collections.singletonList(new BasicDBObject("role", "readWrite").append("db", "testDb")));
db.runCommand(createUserCommand);

但是,使用Collections.singletonList只允许向角色列表中添加单个BasicDBObject,因此只允许添加单个角色。我想实现shell命令的等价物:

db.createUser( { user: "testUser",
pwd: "password",
roles: [ { role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
{ role: "readWrite", db: "testDb" }
] } );

即在同一个创建方法调用中添加多个角色。这能做到吗?

你可以试试这个:

List<BasicDBObject> roles = new ArrayList<>();
roles.add(new BasicDBObject("role", "clusterAdmin").append("db", "admin"));
roles.add(new BasicDBObject("role", "readAnyDatabase").append("db", "admin"));
roles.add(new BasicDBObject("role", "readWrite").append("db", "testDb"));

这个:

final BasicDBObject createUserCommand = new BasicDBObject("createUser", "testUser")
.append("pwd", "password")
.append("roles", roles);
db.runCommand(createUserCommand);

最新更新