MongoDB Java列出了所有数据库用户

时间:2015-07-20 13:42:31

标签: java mongodb database

我目前正在创建一个与MongoDB连接的Java应用程序,并执行各种数据库操作,例如从应用程序中查找,插入和更新。

我创建了一个对话框表单,用户可以使用read和readwrite角色添加多个用户(using method addUser(String username, char[] passwd, boolean readOnly) )。我希望能够通过单击此对话框中的按钮列出所有用户,然后右键单击特定用户以便能够删除用户。 (using method removeUser(String username))

问题是,在网上进行了几次研究后,我找不到任何提供此类方法的库(返回所有用户),或者我不知道如何获得此结果。

这是一个赋值,但它不是一个特定的问题,因为赋值与数据库操作更相关。但是我想添加这个功能,因为它会非常酷。任何帮助是极大的赞赏。

2 个答案:

答案 0 :(得分:1)

所有Mongo用户帐户都列在system.users数据库的集合admin中。

有关数据格式,请参阅http://docs.mongodb.org/manual/reference/system-users-collection/

或者,您可以使用命令usersInfo

BasicDBObject dbStats = new BasicDBObject("usersInfo", 1);
CommandResult command = db.command(dbStats);
System.out.println(command.get("users"));
BasicDBList users = (BasicDBList) command.get("users");
for (Object u : users) {
    String username = (String) ((BasicDBObject) u).get("user");
    System.out.println(username);
}

答案 1 :(得分:0)

我也遇到了这个问题。因为第一个答案(罗伯特的答案)很旧,所以我给出了新答案;

首先,这是我的Maven信息:

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver</artifactId>
        <version>3.8.0</version>
    </dependency>

第二,我使用了JDK的runCommand,您也可以检查API文档。这是理论链接:link,最重要的信息: link

最后,我的代码:

Document dbStats = new Document("usersInfo", 1);
Document command = db.runCommand(dbStats);
ArrayList<Document> users = (ArrayList<Document>) command.get("users");
System.out.println(users);