2013-03-14 17 views
5

Sto scrivendo un algoritmo che passerà attraverso tutti i database Mongo disponibili in java.MongoDB elenca i database disponibili in java

Sulle finestre shell Io faccio solo

show dbs 

Come posso fare questo in Java e tornare un elenco di tutte le banche dati disponibili?

+0

Si sta utilizzando il driver standard? –

+0

Sì, sto usando quello standard. –

risposta

13

si dovrebbe fare questo in questo modo:

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

che semplicemente vi darà una lista di tutti i nomi dei database disponibili.

È possibile visualizzare la documentazione here.

Aggiornamento:

Come @CydrickT di cui sotto, getDatabaseNames è già deprecato, quindi abbiamo bisogno di passare a:

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

Come mi è mancato! Sì, ha fatto il trucco! grazie mille! –

7

Per chi viene qui perché il metodo è deprecato getDatabaseNames();/non disponibile , ecco il nuovo modo di ottenere queste informazioni:

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

Ecco un metodo che restituisce l'elenco dei nomi di database come il precedente metodo getDatabaseNames():

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; 
} 
+0

Questo è vero, grazie mille per la risposta, questa dovrebbe essere la risposta corretta, quindi non ci sarà confusione.Cheers, buona fortuna. – Vlad