0
我有一个关于MongoDB的结果一个一般性的问题:可以说我有一万亿的结果,我想分手了使用卡斯巴司机我似乎仍然即使使用limit命令来获得OutOfMemoryError异常。对于如何处理巨大的结果集,除了使用限制和懒惰地打开下一页之外,是否有一般性建议?斯卡拉大(MongoDB的)处理结果集
或者可以一个甚至使用视图的方式轻松地处理这个过程?
是否有某种magick技巧,使其更容易一点?
问候,
斯特凡
我有一个关于MongoDB的结果一个一般性的问题:可以说我有一万亿的结果,我想分手了使用卡斯巴司机我似乎仍然即使使用limit命令来获得OutOfMemoryError异常。对于如何处理巨大的结果集,除了使用限制和懒惰地打开下一页之外,是否有一般性建议?斯卡拉大(MongoDB的)处理结果集
或者可以一个甚至使用视图的方式轻松地处理这个过程?
是否有某种magick技巧,使其更容易一点?
问候,
斯特凡
好吧,
它不是一个直接的解决方案,但与一般的方面大的游标的问题是,他们将成为IO最终约束。
所以我加的能力,网页应用程序的结果:结果(向前和向后)我用下面的方法之间
循环:
def findPagesWithGreaterId(pageid: String, limit: Int): List[Page] =
findAsListSortedLimit(MongoDBObject("_id" -> MongoDBObject("$gt" -> new ObjectId(pageid))), MongoDBObject("_id" -> 1), limit)
/**
* finds a slice of pages with a smaller id (required for paging)
*/
def findPagesWithSmallerId(pageid: String, limit: Int): List[Page] =
findAsListSortedLimit(MongoDBObject("_id" -> MongoDBObject("$lt" -> new ObjectId(pageid))), MongoDBObject("_id" -> 1), limit)
/**
所以,不管你是什么你是否应该首先限制光标大小,因为大光标总是会以糟糕的表现结束。
这当然不是说我想有elgant解决方案。
你能提供你如何查询和遍历结果集的见解? – Ross