2013-07-03 25 views
0

我有一个关于MongoDB的结果一个一般性的问题:可以说我有一万亿的结果,我想分手了使用卡斯巴司机我似乎仍然即使使用limit命令来获得OutOfMemoryError异常。对于如何处理巨大的结果集,除了使用限制和懒惰地打开下一页之外,是否有一般性建议?斯卡拉大(MongoDB的)处理结果集

或者可以一个甚至使用视图的方式轻松地处理这个过程?

是否有某种magick技巧,使其更容易一点?

问候,

斯特凡

+1

你能提供你如何查询和遍历结果集的见解? – Ross

回答

0

好吧,

它不是一个直接的解决方案,但与一般的方面大的游标的问题是,他们将成为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解决方案。