mongodb获取集合名称c#

san*_*ndy 7 c# mongodb mongodb-.net-driver

我正在尝试使用Mongo C#Driver获取所有数据库的列表以及相关的连接集合列表.

foreach (string database in server.GetDatabaseNames())
 {
  var db = client.GetDatabase(database);

  var col = ((MongoDatabase)db).GetCollectionNames();

   //Do something
    }
Run Code Online (Sandbox Code Playgroud)

我能够获取数据库列表,但不能获取集合名称.它没有过去

         ((MongoDatabase)db).GetCollectionNames();
Run Code Online (Sandbox Code Playgroud)

我可能错过了什么?

Van*_*nel 6

这就是我解决这个问题的方法,因为接受的答案对我没有用.

MongoDb版本3.4.0.
C#驱动程序版本2.4.3.23.

public List<string> GetCollections()
{
    List<string> collections = new List<string>();

    foreach (BsonDocument collection in _database.ListCollectionsAsync().Result.ToListAsync<BsonDocument>().Result)
    {
        string name = collection["name"].AsString;
        collections.Add(name);
    }

    return collections;
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*ate 5

MongoDB 2.6版

mongodb-csharp驱动程序:2.1.1

尝试:

//user: root  pwd:pwd dbName:admin
  try
  {
    var client = new MongoClient("mongodb://root:pwd@localhost/admin");
    var db = client.GetDatabase("admin");
    foreach (var item in db.ListCollectionsAsync().Result.ToListAsync<BsonDocument>().Result)
     {
                Console.WriteLine(item.ToString());
     }
  } catch (Exception ex)
  {

    throw ex;
  }
Run Code Online (Sandbox Code Playgroud)

重要提示:用户“ root”必须存在于数据库中

在cmd上以管理员身份

C:\yourMongoServer\bin>mongo.exe --port 27017
use admin
db.createUser(
  {
    user: "root",
    pwd: "pwd",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
Run Code Online (Sandbox Code Playgroud)