连接到mongodb唱C#快速导览不创建数据库或集合

时间:2017-04-15 03:45:09

标签: c# mongodb

我第一次通过mongoDB Driver Documentation Quick Tour。特别是2.4版本。

我在192.168.1.50地址创建了一个新的mongodb实例,它似乎运行正常。

MongoDB文档提供了以下示例:

var client = new MongoClient("mongodb://192.168.1.50:27017");
#It's ok if the database doesn't yet exist.  It will be created upon first use
var database = client.GetDatabase("testDB");
#It’s ok if the collection doesn’t yet exist. It will be created upon first use.
var collection = database.GetCollection<BsonDocument>("testCollection");

然而,当我进入我的服务器时,我进入mongo控制台

mongo

我使用

列出数据库
show dbs

输出仅

admin 0.000GB
local 0.000GB

我还有什么办法让这项工作成功吗?我在try / catch上没有出现任何错误,看起来运行正常。

疑难解答

到目前为止,我已通过以下方式确认mongodb正在运行:

netstat -plntu

显示处于LISTEN状态的27017上运行的mongod。

我也有兴趣知道mongodb服务器上是否有办法查看实时连接,所以我可以看看它是否真的成功连接。

2 个答案:

答案 0 :(得分:3)

问题是你需要创建几乎一个集合才能保留创建的数据库(奇怪吧?)我用robomongo测试它并以这种方式工作。

问题是GetCollection方法没有创建目标集合,您可以尝试使用此代码:

    static void Main(string[] args)
    {
        var client = new MongoClient("mongodb://192.168.1.50:27017");
        //# It's ok if the database doesn't yet exist.  It will be created upon first use
        var database = client.GetDatabase("test");
        //# It’s ok if the collection doesn’t yet exist. It will be created upon first use.

        string targetCollection = "testCollection";
        bool alreadyExists = database.ListCollections().ToList().Any(x => x.GetElement("name").Value.ToString() == targetCollection);

        if (!alreadyExists)
        {
            database.CreateCollection(targetCollection);
        }

        var collection = database.GetCollection<BsonDocument>(targetCollection);

    }

答案 1 :(得分:1)

事实证明,我找到的关于如何设置多个bindIp的方法是不正确的。问题根本不在于C#。我找到了解决方案here

如果它消失了,这里是我必须遵循的多个ip的当前设置

编辑文件 /etc/mongod.conf

用逗号分隔逗号分隔的Ips

foo.bar.baz = function() { ... }

我的原始代码运行正常,我在bindIp上没有括号。