如何读取Mongo文档并将其保存到对象?

时间:2016-08-23 17:42:27

标签: c# wpf mongodb

我需要阅读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'的字段并将其存储到对象中?

由于

1 个答案:

答案 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();