从 C# .Net 连接 MongoDB
Posted
技术标签:
【中文标题】从 C# .Net 连接 MongoDB【英文标题】:Connect MongoDB from C# .Net 【发布时间】:2016-11-02 12:08:37 【问题描述】:我是 MongoDB 新手,我正在尝试连接到另一个系统中的客户端服务器,但运行代码时没有任何反应。我调试了代码,发现编译器在“使用(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 数据的工作代码。
【问题讨论】:
尝试调试你的源代码! “什么都没发生”和“它没用”一样糟糕。单步执行您的代码。连接成功了吗?代码走什么路径? 同意@duDE。如果没有任何反应,可能您处于无限循环或类似情况。尝试逐行调试您的代码并了解它失败的地方。 它在行中失败,在此之后使用 (var cursor = await collection.FindAsync(filter)) 没有响应。 什么都没有发生是因为CallMain()
是一个异步方法,你不能像这样在你的线程中捕获异常。
【参考方案1】:
这是您尝试执行的异步方法,因此请尝试使用 Task.Run 来执行该方法
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 以及从 Builders 创建的过滤器。例如,查看 Builders
var filter = Builders<YourModel>.Filter.Eq(x => x.SomeField, "SomeValue");
var results = await collection.Find(filter).ToListAsync();
和 lambda 的等价物是
var results = await collection.Find(x => x.SomeField == "SomeValue").ToListAsync();
【讨论】:
【参考方案2】:你可以试试这段代码(mongodb c# driver 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");
【讨论】:
以上是关于从 C# .Net 连接 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章
如何从 C# 读取 VB.NET 项目中的“app.config”文件
谁能给我一段ASP.NET(C#)连接SQLSERVER数据库以及输出数据的代码?
1.5万字长文:从 C# 入门 Kafka(Kafka .NET 基础)