MongoDB的C#驱动程序:另一种插入数据和避免内存限制的方法

时间:2016-11-29 09:07:48

标签: c# mongodb entity-framework mongodb-.net-driver bson

我正在为我们的数据创建工具,从我们的SQL Server数据库中使用Entity Framework读取数据,并在MongoDB数据库中逐行插入。

在我的代码中,我以这种方式开始:

_client = new MongoClient();
_database = _client.GetDatabase("isovtest");

然后,在我的SQL Server表上有一个循环

 foreach (var erog in db.transactions)

我为每条记录创建一个Bson文档。

document = new BsonDocument{....}

最后我插入它:

_database.GetCollection<BsonDocument>("transactions").InsertOne(document);

我的问题是源表很大,有数百万条记录。在大约400K之后,它每次都会崩溃,因为它内存不足(我的RAM占用了大约1.6 GB:在此大小的情况下它会崩溃,如果仍然有空闲内存的话)。

我认为问题是指令

_database.GetCollection<BsonDocument>("transactions").InsertOne(document);

因为,使用 GetCollection ,它会检索所有数据,每次循环都会获得一个种植者集合。

我试着在循环结束时添加:

document = null;
GC.Collect();

但没有改变。

那么,你能否告诉我是否存在另一种在不使用 GetCollection 方法的情况下在MongoDB集合中插入文档的方法?如果没有,怎么可以避免内存问题?

0 个答案:

没有答案