我有一个MongoDB查询,可以提取大约50,000个大型文档。
这对我的RAM来说太多了,因此电脑变慢了。
现在我想要遍历MongoDB结果的分块。
我想先获取前1000个文档并处理它们,然后再获取下一个1000个文档。
这对我的RAM来说太多了,因此电脑变慢了。
现在我想要遍历MongoDB结果的分块。
我想先获取前1000个文档并处理它们,然后再获取下一个1000个文档。
- 这是处理大量数据的最佳方式吗?还是我应该一个接一个地处理?
我尝试了以下方法:
MongoCursor<MyDocument> items = collection.Find(query);
long count = items.Count();
int stepSize = 1000;
for (int i = 0; i < Math.Ceiling((double)count / stepSize); i++)
{
List<MyDocument> list = items.SetSkip(i * stepSize).SetLimit(stepSize).ToList();
// process the 1000 ...
}
但是这段代码没有起作用,我收到了以下错误:
一旦MongoCursor对象被冻结,就无法修改。
- 如何解决这个问题?