使用c#从MongoDB检索信息

本文关键字:检索 信息 MongoDB 使用 | 更新日期: 2023-09-27 18:09:56

所以我真的是新的非关系数据库,我试图检索我已经存储的信息,在他们的网站上的教程只显示如何获得数据,但不如何处理它,因为出于某种原因,它只使用"var"来声明变量我丢失时,他们正在使用的数据类型。

像这样的其他线程似乎显式声明了它们的变量,但由于某种原因我不能这样做,也不能使用ToList()方法。

我目前使用的代码就像教程中显示的一样,遵循这个(或任何其他方法),我怎么能得到我想要的信息?我知道该方法成功返回的东西,但我想知道我如何使用它?

var collection = database.GetCollection<BsonDocument>("Events");
var filter = Builders<BsonDocument>.Filter.Eq("Event", "Idoru");
var result = collection.Find(filter).ToListAsync();

只是给一些背景,我正在存储预定的事件,所以我试图检索我的"事件"集合中的所有内容,具有事件名称"Idoru",(我想)也会给我其他2个字段,即日期和描述。尽管我计划在其他集合中存储其他类型的数据。

使用c#从MongoDB检索信息

编辑:我刚刚意识到您正在使用2.0驱动程序,因为您的示例代码使用了Builders.Filter.Eq,我已经相应地更新了答案。

当你检索一个集合时,它的类型是IMongoCollection。您可以通过BsonDocument或特定类型检索它,如GetCollection如果你有一个可序列化到Bson的Event类

新MongoDriver中的所有API都是异步的,所以你唯一的选择是在返回的任务上调用. result以同步使用它们。

当你用你的查询调用Find时,你会得到一个IFindFluent返回。你可以在上面调用ToListAsync()来获取你的对象列表。

MongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>("Events");
var filter = Builders<BsonDocument>.Filter.Eq("Event", "Idoru");
var result = collection.Find(filter).ToListAsync().Result;

当然可以:

MongoCollection<Event> collection = database.GetCollection<BsonDocument>("Events");
var filter = Builders<Event>.Filter.Eq(q => q.Name == "Idoru");
var result = collection.Find(filter).ToListAsync().Result;
// result is na IList<Event> now.

如果您更愿意直接使用Event,并且提供适当的可序列化的事件类