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

问题描述:

我需要阅读Mongo文档中的某些字段。我使用Filter.EQ()方法过滤了一个文档,但是如何在该文档中找到并存储一个字段?这是我的代码:如何读取Mongo文档并将其保存到对象?

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'的字段并将其存储到一个对象中呢?

感谢

当你定义使用Builders<BsonDocument>.Filter这里的过滤器,你仅仅是定义一个过滤器,你可以使用/执行的查询。就像在一个字符串变量中存储一个SQL字符串一样。

你在这里错过的是执行过滤器并实际检索数据。据Mongodb C# driver doc

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(); 
+0

非常有帮助!你知道是否有一种方法来初始化var文件“dynamicaly”?我需要知道是否有方法在不同的过滤器上启动它,具体取决于我从我的电话中获得的内容 – Gino