2011-05-24 26 views

Respuesta

17

muy fácilmente:

var server = MongoServer.Create("mongodb://localhost/?safe=true"); 
var databaseNames = server.GetDatabaseNames(); 
+0

Heh, gracias, de alguna manera me perdí ese método :) – Andrey

6

La clase MongoServer desfasada y en su versión 2.0.0.

Puede utilizar ListDatabasesAsync

using (var cursor = await client.ListDatabasesAsync()) 
{ 
    await cursor.ForEachAsync(d => Console.WriteLine(d.ToString())); 
} 
0

La clase MongoServer desfasada y en su versión 2.0.0 como Juri señaló. Si no desea utilizar la función asíncrona, así es como lo hago:

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

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

Solo una cosa. Está en formato BsonDocument que tiene 2 elementos: "nombre" y "tamañoOnDisco".

Espero que esto ayude.

0

no pudo validar si un determinado DB existe o no con las respuestas existentes, por lo que aquí es mi opinión sobre ella:

// 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; 
    } 

y luego usarlo como esto:

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

Usando : Mongo Oficial C# v2.4.4 controlador

1

Solución de Trabajo :

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 
     } 
    } 
} 
Cuestiones relacionadas