我有一个mongoDb集合,包含大约2万个文档。使用c#驱动程序更新一个文档大约需要250毫秒。但是在查看mongodb日志时,我得到的是“ executionTimeMillisEstimate”:0,因此,如果我理解正确的话,更新会立即发生
有没有一种方法可以减少执行时间,或者执行时间上的差异仅仅是C#驱动程序固有的?
var connectionString = "mongodb://localhost:27017";
IMongoClient client = new MongoClient(connectionString);
var database = client.GetDatabase("Cities");
var collection = database.GetCollection<BsonDocument>("City");
var timespan = DateTime.Now;
//update field result in document with given ObjectId
collection.UpdateOne(
new BsonDocument{
{"_id",new ObjectId("56d61033a378eccde8a8354f")}}
,Builders<BsonDocument>.Update.Set("result","test"));
Console.WriteLine(DateTime.Now.Subtract(timespan));
答案 0 :(得分:0)
当您执行new MongoClient()
时,需要花费一些时间来建立与数据库的连接。您的第一个操作将需要几百毫秒的时间才能完成。之后的所有操作都应该非常快地完成(由于驱动程序的连接池)。在我的开发机器上,我看到<5ms的插入时间。
因此,请确保您只创建一次client
,然后重复使用driver docs中提到的所有后续操作。
答案 1 :(得分:0)
请确保您执行相同的命令。如今,异步方法被认为是现代的。所以,尝试
await collection.UpdateOneAsync(
new BsonDocument{
{"_id",new ObjectId("56d61033a378eccde8a8354f")}}
,Builders<BsonDocument>.Update.Set("result","test"));