Check if mongodb database exists?

Is there any way to check if the mongo allready database exists?

+7
source share
8 answers

Yes, you can get a list of existing databases. From the Java driver, you can do something similar to get the database names on the mongod server running on localhost

Mongo mongo = new Mongo( "127.0.0.1", 27017 ); List<String> databaseNames = mongo.getDatabaseNames(); 

This is equivalent to the mongo shell show dbs command. I am sure that similar methods exist in all drivers.

+10
source

For those who come here because the getDatabaseNames(); method getDatabaseNames(); depreciating / unavailable, here is a new way to get a list of existing databases:

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

Here is a method that checks if a database is found:

 public Boolean databaseFound(String databaseName){ MongoClient mongoClient = new MongoClient(); //Maybe replace it with an already existing client MongoCursor<String> dbsCursor = mongoClient.listDatabaseNames().iterator(); while(dbsCursor.hasNext()) { if(dbsCursor.next().equals(databaseName)) return true; } return false; } 
+2
source

in python using pymongo

 from pymongo import MongoClient db_name = "foo" conn = MongoClient('mongodb://localhost,localhost:27017') db = self.conn[str(db_name)] if bool(db_name in conn.database_names()): collection.drop() 
+1
source

I would like to add a C # version. I am using MongoDB.Driver 2.2.2.

 static bool DatabaseExists(string connectionString) { var mongoUri = new MongoUrl(connectionString); var client = new MongoClient(mongoUri); var dbList = Enumerate(client.ListDatabases()).Select(db => db.GetValue("name").AsString); return dbList.Contains(mongoUri.DatabaseName); } static IEnumerable<BsonDocument> Enumerate(IAsyncCursor<BsonDocument> docs) { while (docs.MoveNext()) { foreach (var item in docs.Current) { yield return item; } } } 
+1
source

using MongoDb C # Driver 2.4

  private bool DatabaseExists(string database) { // _client is IMongoClient var dbList = _client.ListDatabases().ToList().Select(db => db.GetValue("name").AsString); return dbList.Contains(database); } 

using:

  if (!DatabaseExists("FooDb") { // create and seed db } 
+1
source

From the shell, if you want to explicitly check if the database exists:

 db.getMongo().getDBNames().indexOf("mydb"); 

Will return '-1' if "mydb" does not exist.

To use this from the 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 
+1
source

Try it, it worked for me (on Mac OSx)

 MongoClient mongoClient = new MongoClient("localhost"); /** **/ boolean dbExist = mongoClient.listDatabaseNames(). into(new ArrayList<String>()).contains("TEST"); System.out.print(dbExist); 
0
source

The above PyMongo example did not work for me, so I rewrote it using the more standard list_databases () method in the MongoClient library:

from pymongo import MongoClient db_name = "foo" conn = MongoClient('mongodb://localhost,localhost:27017') if bool(db_name in conn.list_databases()): print true # or return true here else: print false # or return false here

0
source

All Articles