Connect MongoDB from C# .Net
本文关键字:Net from MongoDB Connect | 更新日期: 2023-09-27 18:16:00
我是MongoDB的新手,我正试图连接到另一个系统中的客户端服务器,但当我运行代码时没有发生任何事情。我调试了代码,发现编译器在"using (var cursor = await collection.FindAsync(filter))"行之后没有传递。
private void btn_Click(object sender, EventArgs e)
{
CallMain().Wait();
}
static async Task CallMain()
{
var conString = "mongodb://215.658.326.54:2154";
var Client = new MongoClient(conString);
var DB = Client.GetDatabase("db_name");
var collection = DB.GetCollection<BsonDocument>("User");
var filter = new BsonDocument();
try
{
using (var cursor = await collection.FindAsync(filter))
{
while (await cursor.MoveNextAsync())
{
foreach (var doc in cursor.Current)
{
Console.WriteLine(doc);
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
请为我提供一个解决方案,或指导我一个工作代码连接到mongodb在另一个服务器和fetech数据。
这是一个你正在尝试执行的异步方法,所以尝试使用Task。运行以执行方法
private void btn_Click(object sender, EventArgs e)
{
Task.Run(() => CallMain().Wait());
}
你可以使用这个方法来检索你的数据而不是迭代游标
var results = await collection.Find(filter).ToListAsync();
foreach(var item in results)
{
Console.WriteLine("whatever");
}
另外,您的过滤器变量是一个空文档,所以我假设您想检索所有记录,如果是这样,您可以使用这个
var results = await collection.Find(x => true).ToListAsync();
Find()接受lambda和从生成器创建的过滤器。查看构建器,例如
var filter = Builders<YourModel>.Filter.Eq(x => x.SomeField, "SomeValue");
var results = await collection.Find(filter).ToListAsync();
对应的是
var results = await collection.Find(x => x.SomeField == "SomeValue").ToListAsync();
你可以试试这个代码(mongodb c#驱动2.0.1)
static void Main(string[] args)
{
Task t = MainAsync(args);
t.Wait();
}
static async Task MainAsync(string[] args)
{
var client = new MongoClient("mongodb://localhost:27017/test");
var db = client.GetDatabase("name");
var coll = db.GetCollection<Book>("collName");}