我正在测试MongoDB地图集,并与我的代码在本地网络上的Docker中运行的方式进行比较。
这是我的docker插入时间的日志;
Called Add for INInvoiceData
Adding 511 for INInvoiceData
Added
Time elapsed: 00:00:02
Finished add/update for INInvoiceData
Called Add for OEOrderData
Adding 427 for OEOrderData
Added
Time elapsed: 00:00:01
Finished add/update for OEOrderData
Total Time elapsed: 00:01:12
这里使用的是付费2GB群集
Logged in
Called Add for INInvoiceData
Adding 511 for INInvoiceData
Added
Time elapsed: 00:00:59
Finished add/update for INInvoiceData
Called Add for OEOrderData
Adding 427 for OEOrderData
Added
Time elapsed: 00:00:48
Finished add/update for OEOrderData
Time elapsed: 00:03:00
我在新西兰,数据库在美国的俄勒冈州(AWS)。我正在使用InsertMany()添加大约500个文档。
每个文档平均约11kb,完成收集后仅5.9mb!我目前在连接上上传了500mb。
这是代码示例
static void AddMongo(IMongoDatabase MongoDB, List<DocumentUpdate> documents, string objectName)
{
Console.WriteLine($"Called Add for {objectName}");
var collection = MongoDB.GetCollection<BsonDocument>(objectName);
// initialise write model to hold list of our upsert tasks
List<BsonDocument> bsonList = new List<BsonDocument>();
Console.WriteLine($"Adding {documents.Count} for {objectName}");
// Create new stopwatch.
Stopwatch stopwatch = new Stopwatch();
// Begin timing.
stopwatch.Start();
// Loop docs and add our PK
for (var i = 0; i < documents.Count; i++)
{
var bsonDoc = BsonDocument.Parse(documents[i].json);
bsonDoc["_id"] = documents[i].keyValue;
bsonList.Add(bsonDoc);
};
collection.InsertMany(bsonList);
Console.WriteLine("Added");
// Stop.
stopwatch.Stop();
// Write hours, minutes and seconds.
Console.WriteLine("Time elapsed: {0:hh\\:mm\\:ss}", stopwatch.Elapsed);
}
有什么想法吗?
编辑:
进行一些调整后,我可以通过在循环中插入一个来解决这个问题。但是,这并不理想。
static void AddMongo(IMongoDatabase MongoDB, List<DocumentUpdate> documents, string objectName)
{
Console.WriteLine($"Called Add for {objectName}");
var collection = MongoDB.GetCollection<BsonDocument>(objectName);
// initialise write model to hold list of our upsert tasks
List<BsonDocument> bsonList = new List<BsonDocument>();
Console.WriteLine($"Adding {documents.Count} for {objectName}");
// Create new stopwatch.
Stopwatch stopwatch = new Stopwatch();
// Begin timing.
stopwatch.Start();
// Loop docs and add our PK
for (var i = 0; i < documents.Count; i++)
{
var bsonDoc = BsonDocument.Parse(documents[i].json);
bsonDoc["_id"] = documents[i].keyValue;
collection.InsertOneAsync(bsonDoc);
//bsonList.Add(bsonDoc);
};
//collection.InsertMany(bsonList);
Console.WriteLine("Added");
// Stop.
stopwatch.Stop();
// Write hours, minutes and seconds.
Console.WriteLine("Time elapsed: {0:hh\\:mm\\:ss}", stopwatch.Elapsed);
}