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