Проверить, существует ли база данных mongodb?
есть ли возможность проверить, существует ли база данных mongo allready?
8 ответов
Да, вы можете получить список существующих баз данных. Из драйвера Java вы можете сделать что-то вроде этого, чтобы получить имена баз данных на команду mongod сервер работает на localhost
Mongo mongo = new Mongo( "127.0.0.1", 27017 );
List<String> databaseNames = mongo.getDatabaseNames();
Это эквивалентно команде Mongo shell "show dbs". Я уверен, что подобные методы существуют во всех драйверов.
для тех, кто приходит сюда, потому что метод 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;
}
из оболочки, если вы хотите явно проверить, что существует БД:
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
в python с помощью 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()
Я хотел бы добавить версию C#. Я использую MongoDB.Водитель 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;
}
}
}
использование драйвера 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
}
попробуйте это, это сработало для меня (на Mac OSx)
MongoClient mongoClient = new MongoClient("localhost");
/** **/
boolean dbExist =
mongoClient.listDatabaseNames().
into(new ArrayList<String>()).contains("TEST");
System.out.print(dbExist);
приведенный выше пример 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