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