我需要阅读Mongo文档中的某些字段。我使用Filter.EQ()
方法过滤掉了一个文档,但是如何在该文档中找到并存储字段?这是我的代码:
public void human_radioButton_Checked(object sender, RoutedEventArgs e)
{
Upload human = new Upload(); //opens connection to the database and collection
var filter = Builders<BsonDocument>.Filter.Eq("name", "Human");
race_desc description = new race_desc();
description.desc = Convert.ToString(filter);
desc_textBox.Text = description.desc;
然而,这不起作用,因为我没有抓住任何字段,只是文档。那么如何读取名为'A'
的字段并将其存储到对象中?
由于
答案 0 :(得分:3)
在此处使用Builders<BsonDocument>.Filter
定义过滤器时,您只需定义可在查询中使用/执行的过滤器。就像在字符串变量中存储SQL字符串一样。
您在这里错过的是执行过滤器并实际检索数据。根据{{3}}:
var collection = _database.GetCollection<BsonDocument>("restaurants");
var filter = Builders<BsonDocument>.Filter.Eq("borough", "Manhattan");
var result = await collection.Find(filter).ToListAsync();
然后您可以迭代结果并访问属性,如
foreach(var result in results)
{
//do something here with result.your_property
}
如果您只想要第一个结果
var result = (await collection.Find(filter).ToListAsync()).FirstOrDefault();
现在,如果您想使用BsonSerializer将您现在使用的BsonDocument
转换为您自己的类反序列化文档:
var myObj = BsonSerializer.Deserialize<YourType>(result);
您也可以将它映射到您自己的班级:
var yourClass = new YourType();
yourClass.Stuff= result["Stuff"].ToString();