1
我有一個大約200M +文檔的Mongo DB。每個文檔都有一個「名稱」字段(索引),它是一個字符串和一個「項目」字段(未編入索引),它是一個整數數組。陣列的大小可以在1到100之間。檢索一個大的固定的標識符集的Mongo文檔
假設我有一個包含大約1M個名稱的txt文件。我需要爲每個這些1M名稱創建另一個包含「條目」的txt文件。
選項:
- 通過名字在一個基於_id時間和提取物品只是迭代。
- 創建一小組名稱(比如每次100個)的「批處理」,並使用
$in
運算符查詢數據庫。之後逐個遍歷文檔。 - 使用某種map-reduce來分解1M名稱並並行查詢它們。
什麼是最有效的方法呢?
我不知道關於parallelCollectionScan,謝謝指點我。如果名稱數量接近總文檔數量,例如,而不是1M名稱,10M名稱是否會比說100K名稱的效果更好,您認爲parallelCollectionScan會更好嗎? – user2602740 2014-10-29 01:07:49
隨着數量的增加,丟棄的記錄百分比下降。在200M下,平行掃描將盡可能快地得到。在1記錄這是關於你可以做的最糟糕的。準確地說,這些極端之間的界限以及它跨越其他解決方案的界限很難預測。我一直都很驚訝暴力解決方案對'聰明'的解決方案做得如何:大多數磁盤和內存架構都是爲了處理愚蠢的順序過程而設計的。你真的需要使用你選擇的硬件進行基準測試。 – 2014-10-29 03:30:11
謝謝,是的,我會仔細檢查一下,看看什麼是最好的。另一個問題 - 我在apidoc中看到parallelCollectionScan不適用於分片羣集。你知道這是爲什麼嗎? – user2602740 2014-10-29 15:01:35