我遍歷一個Mongo DB集合。這個集合有數百萬個文檔。我正在使用Java API進行此迭代。這種迭代練習可能會持續一段時間,我們不想影響應用程序的性能。所以我們計劃在這個迭代過程中使用Thread.sleep。但是我們正面臨着光標超時的問題。任何人都面對過這個?另外,是否有可能以塊的形式讀取數據,例如100個文件一次?MongoDB光標問題,而迭代一個巨大的集合
回答
而不是在整個集合上使用遊標,您可以嘗試通過_id對集合進行分頁。因此,每次查詢100個文檔(按_id排序)並保留您遇到的最後一個_id。然後在每個連續的查詢中使用一個條件來獲取文檔,其中_id> last_id來自之前的提取。
光標會自動尋找您的頁面,它不會一次從服務器獲取所有的頁面。遊標只在第一次抓取時返回101個文檔,並且如果需要,它將不可見地返回到服務器以請求更多(請參閱http://docs.mongodb.org/manual/core/cursors/)。因此,不需要以這種方式手動翻頁 – Trisha
或者如果您確實必須手動分頁,請使用跳過和限制組合。 – evanchooly
跳過並限制不會在大型收藏中的深度頁面上提供良好的性能,因爲跳過仍然需要實際跳過以前的結果。 –
- 1. plsql光標迭代問題
- 2. mongoDB做了一個巨大的集合影響其他集合的性能?
- 3. mongodb遊標迭代性能問題
- 4. Firefox - 巨大的光標
- 5. 迭代在Django中的大集合 - 緩存問題
- 6. MongoDB - 單個巨大的原始數據集合。是否分裂?
- 7. Java集合中的迭代器中的光標實現
- 8. 從MLab中迭代一個pymongo光標
- 9. 通過spring-data迭代MongoDB中的大集合
- 10. 將MongoDB集合迭代到pug
- 11. 通過使用Meteor.js迭代MongoDB集合
- 12. Python中的巨大集合
- 13. 查找具有巨大字典的巨大集合的交集
- 14. 快速搜索非常罕見的領域在一個巨大的mongodb集合
- 15. PyMongo - 光標迭代
- 16. 最大光標問題
- 17. Mongodb:多個集合或一個大集合w/index
- 18. 迭代兩個集合LINQ
- 19. 將對象集合添加到另一個對象集合而不會迭代
- 20. JPA迭代一個集合場
- 21. 迭代一個集合哪兒
- 22. 如何迭代一個有序集合?
- 23. Java:在ibatis中迭代一個集合
- 24. 排序一個mongoDb光標
- 25. MongoDB Catch-22不會讓我丟棄巨大的集合
- 26. 迭代過一個jQuery集合,而不必重建jQuery對象
- 27. 迭代集合的子集
- 28. 迭代集合的子集
- 29. 返回迭代器而不是集合
- 30. 在mongodb中迭代集合中單個鍵的值列表
無論如何,遊標只返回塊,但如果你想手動管理它,你可以設置跳過和限制,就像在SQL查詢中一樣,例如http://docs.mongodb.org/manual/reference/method/cursor .skip/ – Trisha