使用c#过滤MongoDB数据库并将文档拉入DataGridView
本文关键字:文档 DataGridView 过滤 MongoDB 数据库 使用 | 更新日期: 2023-09-27 18:15:00
我试图过滤MongoDB数据库与文本框内存储的文本。例如,我将"turtle"和所有具有"Name"的条目"turtle"将出现在datagridview中。
这里是连接到MongoDB数据库的按钮代码,获取数据库名称和"用户"集合,并应用文本框txtName内的任何过滤器。
private void btnSearch_Click(object sender, EventArgs e)
{
var client = new MongoClient("mongodb://localhost");
var database = client.GetDatabase("test");
var collection = database.GetCollection<BsonDocument>("users");
var filter = Builders<BsonDocument>.Filter.Eq("Name", txtName.Text);
}
我不知道下一步该去哪里。然后,我需要将所有数据绑定到datagridviews数据源中,以匹配名称为turtle的记录。
dgvAll.DataSource = somevariable;
谢谢
将数据从数据库中取出
var results = collection.Find(filter).ToList();
这将给你一个对象列表,你可以像绑定其他集合一样绑定这些对象。
你可能想看看强类型的模型,而不是使用文本查询。例如
public class MyModel
{
public string SomeProperty { get; set; }
public string SomeOtherProperty { get; set; }
}
当你查询
private void btnSearch_Click(object sender, EventArgs e)
{
var client = new MongoClient("mongodb://localhost");
var database = client.GetDatabase("test");
var collection = database.GetCollection<MyModel>("users");
var filter = Builders<MyModel>.Filter.Eq(x => x.SomeProperty == "SomeValue" && x.SomeOtherProperty == "SomeOtherValue");
var results = collection.Find(filter).ToList();
//Now you will have a list of MyModel objects in results - List<MyModel>
}
一旦你有了你的集合(无论你用什么方式将它从数据库中取出),你可以像这样绑定:
dgvAll.DataSource = results;
dgvAll.DataBind();
您需要遵循以下步骤…
-
查询DB
var result = collection.Find(filter).ToList();
结果将包含数据列表
-
将
BsonDocument
反序列化为POCO类public class User { public string Name { get; set; } public BsonObjectId _id { get; set; } } IEnumerable<User> allUsers = BsonSerializer.Deserialize<IEnumerable<User>>(result);
-
现在可以绑定数据源了
dgvAll.DataSource = allUsers; dgvAll.DataBind();
你的最终代码看起来像这样…
private void btnSearch_Click(object sender, EventArgs e)
{
var client = new MongoClient("mongodb://localhost");
var database = client.GetDatabase("test");
var collection = database.GetCollection<MyModel>("users");
var filter = Builders<BsonDocument>.Filter.Eq("Name", txtName.Text);
var results = collection.Find(filter).ToList();
IEnumerable<User> allUsers = BsonSerializer.Deserialize<IEnumerable<User>>(result);
dgvAll.DataSource = allUsers;
dgvAll.DataBind();
}
N。B:如果你没有User
类,首先创建一个必要的属性。