我正在尝试为下一个项目学习MongoDB。我在Windows 7机器上安装了MongoDB。我可以使用mongo.exe创建集合和检索数据。我正在尝试使用官方C#驱动程序来操作集合,但我的测试控制台应用程序在尝试连接到服务器时进入“深渊”(我猜)。
我写了以下代码:
static void Main(string[] args)
{
try
{
// Create server settings to pass connection string, timeout, etc.
var settings = new MongoServerSettings();
settings.Server = new MongoServerAddress("localhost", 27017);
// Create server object to communicate with our server
var server = new MongoServer(settings);
server.Connect(TimeSpan.FromMilliseconds(1000));
// Get our database instance to reach collections and data
var message = string.Empty;
server.IsDatabaseNameValid("test", out message);
Console.WriteLine(message);
var database = server.GetDatabase("test");
var users = database.GetCollection("users").FindAll();
foreach (var user in users)
{
Console.WriteLine("User found");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException);
Console.WriteLine(ex.StackTrace);
}
Console.ReadLine();
}
控制台应用程序停止在线 server.Connect()上工作。我把这行只是为了找到问题,我知道没有必要明确连接到服务器。如果我删除该行,则控制台应用程序将停止在行 foreach(用户中的var用户)
上工作我还尝试使用以下代码获取服务器但没有成功:
var mongoClient = new MongoClient("mongodb://<host>:27017");
var server = mongoClient.GetServer();
答案 0 :(得分:0)
代码很完美! MongoDB的特质是,当您尝试通过C#驱动程序连接到MongoDB时,您必须首次接受连接。下次,MongoDB将记住您的最后一次接受并继续前进。
必须设置删除此条件,但我还没有找到它。我会尽快更新。
快乐的芒果数据库学习。
答案 1 :(得分:-1)
使用你的最后一个例子:
var mongoClient = new MongoClient("mongodb://localhost");
var server = mongoClient.GetServer();
除非它没有在标准端口上运行在同一台机器上