MongoDb:通过Java驱动程序在$external中创建用户

MongoDb:通过Java驱动程序在$external中创建用户,mongodb,mongodb-java,Mongodb,Mongodb Java,我们需要在$external中创建用户,以允许他们通过LDAP登录。 在命令shell上,执行以下命令: db.getSiblingDB('$external').createUser({ user : 'username', roles: [ { role: 'dbOwner', db: 'databasename' } ] } ) 工作正常 但是,只要我们通过Java驱动程序执行相同的命令,就会出现异常 Java代码: DB db = mongoClient.getDB("$externa

我们需要在$external中创建用户,以允许他们通过LDAP登录。 在命令shell上,执行以下命令:

db.getSiblingDB('$external').createUser({ user : 'username', roles: [ { role: 'dbOwner', db: 'databasename' } ] } )
工作正常

但是,只要我们通过Java驱动程序执行相同的命令,就会出现异常

Java代码:

DB db = mongoClient.getDB("$external");
String command = "db.getSiblingDB('$external').createUser({ user : '"+ userName +"', roles: [ { role: 'dbOwner', db: 'CMRepWs_'"+userName.toUpperCase()+"' } ] } )";

CommandResult result = db.command(command);
结果消息:

{ "serverUsed" : "lblasa1t.cm-cic.fr:27017" , "ok" : 0.0 , "errmsg" : "no such command: db.getSiblingDB('$external').createUser({ user : 'username', roles: [ { role: 'dbOwner', db: 'CMRepWs_username' } ] } )" , "code" : 59 , "bad cmd" : { "db.getSiblingDB('$external').createUser({ user : 'username', roles: [ { role: 'dbOwner', db: 'CMRepWs_username' } ] } )" : true}}
我们使用Java驱动程序2.13.1运行MongoDb 3.0.1版

如果有人知道如何通过Java驱动程序在$external中创建用户,那就太好了

非常感谢并致以最良好的问候, 雅各布

编辑:

我们还使用以下代码进行测试:

    DB db = mongoClient.getDB("$external");

    String dbOwner = "dbOwner";
    String dbName = "CMRepWs_" + userName.toUpperCase();
    String role = "{ role: '" + dbOwner + "', db: '" + dbName + "'}";
    Map<String, Object> commandArguments = new BasicDBObject();

    String[] roles = new String[] { role };
    commandArguments.put("createUser", userName);
    commandArguments.put("roles", roles);
    BasicDBObject command = new BasicDBObject(commandArguments);
    CommandResult result = db.command(command);

在CommandResult对象中。

以下代码工作正常:

    DB db = client.getDB("$external");
    CommandResult result = db.command(new BasicDBObject("createUser",userName).append("roles", Collections.singletonList(new BasicDBObject("role", "dbOwner").append("db", "CMRepWs_Username"))));
    result.throwOnError();
因此,对于这个角色,一个新的基本对象也需要被放大

问候,, 雅各布

    DB db = client.getDB("$external");
    CommandResult result = db.command(new BasicDBObject("createUser",userName).append("roles", Collections.singletonList(new BasicDBObject("role", "dbOwner").append("db", "CMRepWs_Username"))));
    result.throwOnError();