Nuestros mejores desarrolladores agotaron sus reservas de café, por su búsqueda noche y día por la respuesta, hasta que Gustavo encontró la solución en GitHub por lo tanto hoy la compartimos con nosotros.
Solución:
Sí, puede obtener la lista de bases de datos existentes. Desde el controlador de Java, puede hacer algo como esto para obtener los nombres de la base de datos en un mongod servidor que se ejecuta en localhost
Mongo mongo = new Mongo( "127.0.0.1", 27017 );
List databaseNames = mongo.getDatabaseNames();
Esto es equivalente al comando mongo shell “show dbs”. Estoy seguro de que existen métodos similares en todos los controladores.
Desde el shell, si desea verificar explícitamente que existe una base de datos:
db.getMongo().getDBNames().indexOf("mydb");
Devolverá ‘-1’ si “mydb” no existe.
Para usar esto desde el shell:
if [ $(mongo localhost:27017 --eval 'db.getMongo().getDBNames().indexOf("mydb")' --quiet) -lt 0 ]; then
echo "mydb does not exist"
else
echo "mydb exists"
fi
Para cualquiera que venga aquí porque el método getDatabaseNames();
está depreciado / no disponible, aquí está la nueva forma de obtener la lista de bases de datos existentes:
MongoClient mongoClient = new MongoClient();
MongoCursor dbsCursor = mongoClient.listDatabaseNames().iterator();
while(dbsCursor.hasNext())
System.out.println(dbsCursor.next());
Aquí hay un método que valida si se encuentra la base de datos:
public Boolean databaseFound(String databaseName)
MongoClient mongoClient = new MongoClient(); //Maybe replace it with an already existing client
MongoCursor dbsCursor = mongoClient.listDatabaseNames().iterator();
while(dbsCursor.hasNext())
if(dbsCursor.next().equals(databaseName))
return true;
return false;