我在我的项目中使用mongoDB,并且在我的代码中使用了Collection.Update方法,但它无法正常工作,有时会失败,代码粘贴在下面:
collections.Update(Query.EQ("_id", ObjectId.Parse(databaseid)),Update.Set("agent",ip))
如果我尝试在此行之后添加代码,它可能会在大多数时间内起作用:
Thread.Sleep(2000);
那么问题出在哪里?
答案 0 :(得分:2)
您正在使用旧版MongoDB驱动程序。当前版本的驱动程序是2.0.1,它有new async API。因此,您可以在没有线程休眠的情况下等待数据库操作并猜测它需要多长时间。假设您的某些类的属性Id
类型为ObjectId
,Agent
类型为string
:
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。