2011-05-24 78 views
10

如何使用Mongo C#驅動程序列出連接的所有數據庫?MongoDB:獲取所有數據庫的列表?

+11

或者,從shell:'> show dbs' – 2011-05-24 10:40:05

+0

您可以在cmd上使用* show collection *命令.. !! – 2016-10-21 06:39:37

回答

17

很容易:

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

嘿,謝謝,我不知何故錯過了這個方法:) – Andrey 2011-05-24 11:59:37

6

的MongoServer類在2.0.0版本已過時。

您可以使用ListDatabasesAsync

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

的MongoServer類在2.0.0版本不贊成樹裏指出。如果您不想使用異步,請按以下步驟操作:

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

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

只是一件事。 BsonDocument格式具有2個元素:「name」和「sizeOnDisk」。

希望這會有所幫助。

0

我無法驗證,如果給定的DB存不存在與現有的答案,所以這裏是我對此採取:

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

使用:蒙戈官方C#驅動程序v2.4.4

1

工作液:

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 
     } 
    } 
} 
相關問題