Проверить, существует ли база данных mongodb? - PullRequest
10 голосов
/ 13 августа 2011

Есть ли возможность проверить, существует ли база данных mongo уже?

Ответы [ 8 ]

13 голосов
/ 14 августа 2011

Да, вы можете получить список существующих баз данных.Из драйвера Java вы можете сделать что-то вроде этого, чтобы получить имена баз данных на mongod сервере, работающем на localhost

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

Это эквивалентно команде show dbs оболочки mongoЯ уверен, что аналогичные методы существуют во всех драйверах.

5 голосов
/ 04 сентября 2017

Из оболочки, если вы хотите явно проверить, что БД существует:

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

Вернет '-1', если «mydb» не существует.

Чтобы использовать это из оболочки:

if [ $(mongo localhost:27017 --eval 'db.getMongo().getDBNames().indexOf("mydb")' --quiet) -lt 0 ]; then
    echo "mydb does not exist"
else
    echo "mydb exists"
fi
3 голосов
/ 14 декабря 2015

Для тех, кто приходит сюда, потому что метод getDatabaseNames(); устарел / недоступен, вот новый способ получить список существующих баз данных:

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

Вот метод, который проверяет, найдена ли база данных:

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;
}
1 голос
/ 22 июня 2017

с использованием драйвера MongoDb c # 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);
    }

использование:

        if (!DatabaseExists("FooDb")
        {
            // create and seed db

        }
1 голос
/ 01 марта 2016

Я хотел бы добавить версию C #. Я использую 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 голос
/ 31 декабря 2015

в питоне с использованием 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()
0 голосов
/ 10 августа 2017

Приведенный выше пример PyMongo у меня не сработал, поэтому я переписал его с помощью более стандартного метода list_databases () для библиотеки MongoClient:

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 голосов
/ 30 июня 2017

Попробуйте, у меня это сработало (на Mac OSx)

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

System.out.print(dbExist);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...