因此,我对非关系型数据库并不熟悉,并且我尝试检索已存储的信息,tutorial on their site仅显示如何获取数据,但不是如何处理它,因为由于某种原因它只使用" var"声明我们在他们使用的数据类型时丢失的变量。
像this one这样的其他线程似乎明确地声明了它们的变量,但由于某些原因我不能这样做,我也不能使用ToList()方法。
我目前正在使用的代码就像教程中显示的那样,遵循这个(或任何其他方法)我如何获得我想要的信息?我知道该方法成功返回某些东西,但我想知道如何使用它?
var collection = database.GetCollection<BsonDocument>("Events");
var filter = Builders<BsonDocument>.Filter.Eq("Event", "Idoru");
var result = collection.Find(filter).ToListAsync();
为了给出一些背景知识,我存储了预定的事件,所以我试图检索我的&#34;事件&#34;具有事件名称&#34; Idoru&#34;的集合,(我想)也会给我另外两个日期和描述的字段。虽然我计划在其他集合中存储其他类型的数据。
答案 0 :(得分:1)
编辑:我们刚刚意识到您使用的是2.0驱动程序,因为您的示例代码使用了Builders。Filter。Eq我已经更新了答案相应
当您检索IMongoCollection类型的集合时。您可以通过BsonDocument或特定类型检索它,例如GetCollection&lt; Event&gt;如果你有一个可以序列化为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,并提供适当的可序列化事件类。