您好我尝试使用最新的官方MongoDB支持的MongoDB驱动程序在c#中使用Visual Studio 2013连接到我的远程MongoDB。我遇到的问题是我无法插入集合或甚至无法建立连接。
我使用以下代码创建mongo凭证(DBName,用户,密码)
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()它返回一个空db:
> 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不是我的事情,在这里有任何帮助都会非常感激,因为我会围绕这个问题进行讨论吗?
答案 0 :(得分:1)
可能(可能?)CreateCollectionAsync抛出异常,但你没有观察到那个异常。
与C#中的所有异步方法一样,CreateCollectionAsync立即返回,实际工作在后台异步完成。
你应该“等待”这种方法。当您使用await时,调用Task将被挂起,直到被调用的Task完成,此时await将返回被调用Task的结果,或者如果被调用的Task出现故障,则重新抛出异常。