使用凭据连接到 C# 中的 MongoDB

Connect to MongoDB in C# with Credentials

您好我正在尝试使用 Visual Studio 2013 在 c# 中使用最新的官方 MongoDB 支持 MongoDB 的驱动程序连接到我的遥控器 MongoDB。我遇到的问题是我无法插入集合,甚至无法建立连接。

我正在使用以下代码创建 mongo 凭据(数据库名称、用户、密码)

 mongoCredential = MongoCredential.CreateMongoCRCredential("MongoDB", 
                            "xxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxx");

设置凭据列表

 mongoClientSettings = new MongoClientSettings 
        { 
            Credentials = new[] { mongoCredential }, 
            Server = new MongoServerAddress("xx.xxx.xx.xxx", 38180)
        };

将我们的 mongo 服务器凭据添加到我们的客户端

 mongoClient = new MongoClient(mongoClientSettings);

然后连接:

 private void button1_Click(object sender, EventArgs e)
    {
        // Connect to database
        mongoDatabase = mongoClient.GetDatabase("MongoDB");
    }

现在我尝试插入一个集合:

 private void button4_Click(object sender, EventArgs e)
    {
        // Create a collection
        mongoDatabase.CreateCollectionAsync("aCollection");
    }

这个方法对我们不起作用,因为当我从提示符 运行 mongo 并使用凭据连接到远程数据库然后 运行 db.stats() 它 returns 一个空数据库:

 > db.stats()
 {
    "db" : "MongoDB",
    "collections" : 0,
    "objects" : 0,
    "avgObjSize" : 0,
    "dataSize" : 0,
    "storageSize" : 0,
    "numExtents" : 0,
    "indexes" : 0,
    "indexSize" : 0,
    "fileSize" : 0,
    "ok" : 1
 }
 >

MongoDB 不是我的事,如果我正在绕圈子,这里的任何帮助将不胜感激?

有可能(很可能?)CreateCollectionAsync 抛出异常但您没有观察到该异常。

与 C# 中的所有异步方法一样,立即创建 CollectionAsync returns,实际工作在后台异步完成。

你应该"await"这个方法。当您使用 await 时,调用任务会挂起,直到被调用任务完成,此时等待 returns 被调用任务的结果,或者如果被调用任务出错,则重新抛出异常。