MongoDB: Получение списка всех баз данных? - PullRequest
12 голосов
/ 24 мая 2011

Как вывести список всех баз данных для подключения с помощью драйвера Mongo C #?

Ответы [ 5 ]

17 голосов
/ 24 мая 2011

Очень легко:

var server = MongoServer.Create("mongodb://localhost/?safe=true");
var databaseNames = server.GetDatabaseNames();
7 голосов
/ 09 ноября 2015

Класс MongoServer устарел в версии 2.0.0.

Вы можете использовать ListDatabasesAsync

using (var cursor = await client.ListDatabasesAsync())
{
    await cursor.ForEachAsync(d => Console.WriteLine(d.ToString()));
}
2 голосов
/ 29 августа 2017

Рабочий раствор:

MongoClient client = new MongoClient("mongodb://localhost:27017");
using (IAsyncCursor<BsonDocument> cursor = client.ListDatabases())
{
    while (cursor.MoveNext())
    {
        foreach (var doc in cursor.Current)
        {
            Console.WriteLine(doc["name"]); // database name
        }
    }
}
0 голосов
/ 14 июня 2017

Я не смог проверить, существует ли данная БД или нет с существующими ответами, поэтому вот мое мнение:

    // extension method on IMongoClient
    public static IMongoClient AssertDbExists(this IMongoClient client, string dbName)
    {
        bool dbFound = false;

        using(var cursor = client.ListDatabases())
        {
            var databaseDocuments = cursor.ToList();
            foreach (var db in databaseDocuments)
            {
                if (db["name"].ToString().Equals(dbName))
                {
                    dbFound = true;
                    break;
                }
            }
        }

        if (!dbFound) throw new ArgumentException("Can't connect to a specific database with the information provided", nameof(MongoSettings.ConnectionString));

        return client;
    }

А затем используйте это так:

// either you get the client with the DB validated or throws
_client = new MongoClient(settings.ConnectionString).AssertDbExists(_dbName);

Использование: Mongo Официальный драйвер C # v2.4.4

0 голосов
/ 21 октября 2016

Класс MongoServer устарел в версии 2.0.0, как указал Юри.Если вы не хотите использовать async, вот как я это делаю:

var client = new MongoClient("mongodb://" + server_username + ":" + server_password + "@" + server_host + ":" +  server_port);

List<MongoDB.Bson.BsonDocument> databases = client.ListDatabases();

Только одна вещь.Он имеет формат BsonDocument, который имеет 2 элемента: «name» и «sizeOnDisk».

Надеюсь, это поможет.

...