我有一个C#应用程序,它应该读写MongoDB 3数据库。不幸的是,使用MongoDB 3时,许多名称空间和方法都发生了变化,因此这有点困难。
下面是我的代码:
string connectionString = Settings.Default.MongoConnectionString;
string databaseName = Settings.Default.MongoDatabaseName;
var client = new MongoClient(connectionString);
var db = client.GetDatabase(databaseName);
IMongoCollection<Post> collection = db.GetCollection<Post>("post");
foreach (var post in collection.FindAll())
{
// Display to the user
}由于某种原因,"MongoCollection“类不再存在。如何用新版本的MongoDB循环返回的结果?
我得到了以下错误:
'IMongoCollection‘不包含'FindAll’的定义,也找不到接受'IMongoCollection‘类型第一个参数的扩展方法'FindAll’。
有人知道用新版本循环整个集合的正确方法吗?
发布于 2015-11-04 17:40:53
新的C#驱动程序(2.0)是完全异步的。为了枚举集合中的所有文档,应该传递空筛选器并使用ToListAsync()。
var filter = Builders<Post>.Filter.Empty;
foreach(var post in collection.Find(filter).ToListAsync().Result)
// display您还可以使用lambda代替空过滤器:
collection.Find(p => true).ToListAsync()当然,您可以通过等待文档来创建异步方法,而不是阻塞:
private async Task YourMethod()
{
// ...
var posts = await collection.Find(filter).ToListAsync();
foreach(var post in posts)
// display
}推荐阅读:介绍2.0 .NET驱动程序
https://stackoverflow.com/questions/33528368
复制相似问题