9

I am writing an algorithm that will go thru all available Mongo databases in java.

On the windows shell I just do

show dbs

How can I do that in java and get back a list of all the available databases?

Cœur
  • 37,241
  • 25
  • 195
  • 267
Max Doumit
  • 1,065
  • 12
  • 33

2 Answers2

19

You would do this like so:

MongoClient mongoClient = new MongoClient();
List<String> dbs = mongoClient.getDatabaseNames();

That will simply give you a list of all of the database names available.

You can see the documentation here.

Update:

As @CydrickT mentioned below, getDatabaseNames is already deprecated, so we need switch to:

MongoClient mongoClient = new MongoClient();
MongoCursor<String> dbsCursor = mongoClient.listDatabaseNames().iterator();
while(dbsCursor.hasNext()) {
    System.out.println(dbsCursor.next());
}
sel-fish
  • 4,308
  • 2
  • 20
  • 39
jjnguy
  • 136,852
  • 53
  • 295
  • 323
9

For anyone who comes here because the method getDatabaseNames(); is deprecated / not available, here is the new way to get this information:

MongoClient mongoClient = new MongoClient();
MongoCursor<String> dbsCursor = mongoClient.listDatabaseNames().iterator();
while(dbsCursor.hasNext()) {
    System.out.println(dbsCursor.next());
}

Here is a method that returns the list of database names like the previous getDatabaseNames() method:

public List<String> getDatabaseNames(){
    MongoClient mongoClient = new MongoClient(); //Maybe replace it with an already existing client
    List<String> dbs = new ArrayList<String>();
    MongoCursor<String> dbsCursor = mongoClient.listDatabaseNames().iterator();
    while(dbsCursor.hasNext()) {
        dbs.add(dbsCursor.next());
    }
    return dbs;
}
Cydrick Trudel
  • 9,957
  • 8
  • 41
  • 63
  • This is true,thanks so much for the answer ,this should be the correct answer so there will be no confusion.Cheers,best of luck. – Vlad Jun 05 '16 at 19:38