无法从MongoDB数据库中检索集合

时间:2014-02-28 23:29:33

标签: c# mongodb mongodb-.net-driver

我正在尝试为下一个项目学习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();

2 个答案:

答案 0 :(得分:0)

代码很完美! MongoDB的特质是,当您尝试通过C#驱动程序连接到MongoDB时,您必须首次接受连接。下次,MongoDB将记住您的最后一次接受并继续前进。

必须设置删除此条件,但我还没有找到它。我会尽快更新。

快乐的芒果数据库学习。

答案 1 :(得分:-1)

使用你的最后一个例子:

var mongoClient = new MongoClient("mongodb://localhost");
var server = mongoClient.GetServer();

除非它没有在标准端口上运行在同一台机器上