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数据。

Connect MongoDB from C# .Net

这是一个你正在尝试执行的异步方法,所以尝试使用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");}