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

MongoDB的C#驱动程序:插入数据和避免内存限制的另一种方法,c#,mongodb,entity-framework,mongodb-.net-driver,bson,C#,Mongodb,Entity Framework,Mongodb .net Driver,Bson,我正在为我们的数据创建一个工具,使用Entity Framework从SQL Server数据库中读取数据,并将它们逐行插入MongoDB数据库 在我的代码中,我是这样开始的: _client = new MongoClient(); _database = _client.GetDatabase("isovtest"); 然后,使用SQL Server表上的循环 foreach (var erog in db.transactions) 我为每个记录创建一个Bson文档 document

我正在为我们的数据创建一个工具,使用Entity Framework从SQL Server数据库中读取数据,并将它们逐行插入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);
但一切都没有改变


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

GetCollection不消耗内存,因为它不从DB加载任何对象。我确信从SQL server加载数据时会出现内存泄漏。你能展示你的代码吗?老实说,我做到了,但是当我试图从我的mondoDB实例获取数据时,我遇到了类似的问题。mongod.exe进程在我的ram中增长并达到大约3,5 GB。。。我是这样做的:var filter=Builders.filter.Eq(“storeid”,“01”);var collection=_database.GetCollection(“事务”);var result=await collection.Find(filter.toListSync();我没有得到任何结果(我可以确保它有返回的内容),当您有足够大的结果时,您应该通过游标而不是ToListSync获取数据。GetCollection不会消耗内存,因为它不会从DB加载任何对象。我确信从SQL server加载数据时会出现内存泄漏。你能展示你的代码吗?老实说,我做到了,但是当我试图从我的mondoDB实例获取数据时,我遇到了类似的问题。mongod.exe进程在我的ram中增长并达到大约3,5 GB。。。我是这样做的:var filter=Builders.filter.Eq(“storeid”,“01”);var collection=_database.GetCollection(“事务”);var result=await collection.Find(filter.toListSync();我没有得到任何结果(我可以确保它有返回的内容),当您有足够大的结果时,您应该通过游标而不是ToListSync获取数据。
_database.GetCollection<BsonDocument>("transactions").InsertOne(document);
document = null;
GC.Collect();