MongoDB - 从集合中检索500万条记录的最快方法

4

我在我们的项目中使用MongoDB,并且目前正在学习其工作原理。

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

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

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

系统在一段时间后会抛出 OutOfMemoryException 异常。
有没有其他更快或更优化的方法来实现这个?

1
你为什么想一次获取500万条记录? - user2665694
2个回答

4

不要尝试一次性获取所有条目,可以使用筛选器或分批获取几行。

阅读此问题:MongoDB - 分页


1
实际上,我需要一开始就全部集合。 - Kushal Shah
你使用哪个提供程序来获取所有对象?每个对象有多大? - jgauffin
你使用哪个提供程序(例如NoRM)来获取所有对象?每个对象有多大(以字节为单位)?还有,为什么需要获取所有对象? - jgauffin
我使用mongodb.org建议的MongoDBDriver-Release-0.90.0-Beta-1。 该集合包含以下列:Person,Product,Contient,Country,State,City,Qty,Amount。 - Kushal Shah
1
为什么需要获取所有对象?为什么不能一次只获取几个项目?反序列化将占用大量内存,保持5M实体在内存中也是如此。 - jgauffin
显示剩余2条评论

0

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


2
欢迎来到Stackoverflow。别忘了访问这里 - menjaraz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接