【问题标题】:Mongo DB - fastest way to retrieve 5 Million records from a collectionMongo DB - 从集合中检索 500 万条记录的最快方法
【发布时间】:2011-07-01 07:21:21
【问题描述】:

我在我们的项目中使用 MongoDB,我目前正在学习它是如何工作的

我创建了一个包含 500 万条记录的集合。当我在控制台上触发查询db.ProductDetails.find() 时,显示所有数据需要花费太多时间。

当我在 C# 中使用以下代码时

var Products = db.GetCollection("ProductDetails").FindAll().Documents.ToList();

一段时间后系统抛出OutOfMemoryException..

还有其他更快或更优化的方法来实现这一点吗?

【问题讨论】:

  • 为什么要一次获取 500 万条记录???

标签: c# mongodb database


【解决方案1】:

切勿尝试同时获取所有条目。使用过滤器或一次获取几行。

阅读这个问题:MongoDB - paging

【讨论】:

  • 其实我一开始就需要全部收藏
  • 您使用哪个提供程序来获取所有对象?每个物体有多大?
  • 我使用下面的代码 Mongo firsttest = new Mongo(); firsttest.Connect(); var db = firsttest.GetDatabase("myDB"); var Products=db.GetCollection("ProductDetails").FindAll().Documents.ToList();
  • 您使用哪个提供者(如 NoRM)来获取所有对象?每个对象有多大(以字节为单位)?而为什么你需要获取所有对象?
  • 为什么需要获取所有对象?为什么你不能一次取几件物品?反序列化会占用大量内存,因此会在内存中保留 5M 实体。
【解决方案2】:

尝试获取所需的子集。如果您尝试获取所有对象,那么您肯定需要足够的 RAM 作为数据库集合的大小! 尝试获取将在应用程序中使用的对象。

【讨论】:

  • 欢迎来到 Stackoverflow。不要忘记访问this
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多