2015-10-16 106 views
0

我使用MongoDB的在我的項目,我用Collection.Update方法在我的代碼,但它不能正常工作,它會在有時會失敗,代碼粘貼如下:MongoDB的更新方法無法正常工作

collections.Update(Query.EQ("_id", ObjectId.Parse(databaseid)),Update.Set("agent",ip)) 

Thread.Sleep(2000); 

所以問題出在哪裏:

如果我想這行後添加代碼,也許它會在大部分時間工作嗎?

回答

2

您正在使用舊版MongoDB驅動程序。當前版本的驅動程序是2.0.1,它有new async API。所以你可以等待數據庫操作而不用線程休眠並猜測需要多長時間。假設你有一些類的屬性ObjectIdIdstringAgent

private async Task DoSomething(ObjectId id, string ip) 
{ 
    MongoClient client = new MongoClient(connectionString); 
    var db = client.GetDatabase("databaseName"); 
    var collection = db.GetCollection<YourClass>("collectionName"); 
    var update = Builders<YourClass>.Update.Set(x => x.Agent, ip); 
    var result = await collection.UpdateOneAsync(x => x.Id == id, update); 
    // you can check update result here 
} 

所以,只要更新驅動程序,並使用新的異步API。