2014-06-22 48 views
2

使用mongo排序可以排序2百萬記錄是否可能?MongoDB 2.6排序查詢的最大限制

從MongoDB文檔中,很明顯提到「當排序操作消耗超過32兆字節時,MongoDB會返回錯誤。」

但我有一個要求,以排序數量巨大的記錄。怎麼做?

+0

相似,所以回答:https://stackoverflow.com/questions/27023622/overflow-sort-stage-buffered-data-usage-exceeds內部限制 – dkb

回答

3

這是可能的。該文檔指出,只有在MongoDB對內存中的數據進行排序時(即不使用索引),32MB限制才存在。

當排序操作消耗超過32兆字節時,MongoDB 返回一個錯誤。爲避免此錯誤,請創建索引 支持排序操作或將sort()與limit()一起使用。 指定的限制必須導致許多文檔在32兆字節限制內落入 。

我建議你上,你想與ensureIndex命令排序字段添加索引:

db.coll.ensureIndex({ sortFieldName : 1}); 

如果要排序多個字段,你將需要添加上compound index該領域的排序上(在指數事情的字段順序):

db.coll.ensureIndex({ sortFieldName1 : 1, sortFieldName2 : 1}); 
+0

如果我在_id字段上創建索引,那麼我將能夠排序任意數量的記錄,而不會給出限制。糾正我,如果我錯了。 – Vipin

+0

@ user3318102 _id上的索引是自動創建的,因此您不需要創建它。你是對的,如果你在_id字段排序,你不會達到32MB的限制。 –