2014-06-22 5 views
2

정렬 mongo 정렬을 사용하는 2 백만 개의 레코드가 가능합니까 또는 아닌가?MongoDB 2.6 정렬 쿼리의 최대 한도

MongoDB 문서에서 "정렬 작업이 32 메가 바이트를 소비하면 MongoDB는 오류를 반환합니다."

그러나 엄청난 수의 레코드를 정렬해야한다는 요구 사항이 있습니다. 그것을하는 방법?

+0

유사 SO 답변 : https://stackoverflow.com/questions/27023622/overflow-sort-stage-buffered-data-usage-exceeds - 내부 제한 – dkb

답변

3

가능합니다. MongoDB가 인덱스를 사용하지 않고 메모리 내에서 데이터를 정렬 할 때에 만 32MB 제한이 있다는 문서가 있습니다.

정렬 작업이 32MB를 초과하면 MongoDB 은 오류를 반환합니다. 이 오류를 방지하려면 인덱스를 작성하여 정렬 작업을 지원하거나 limit()과 함께 sort()를 사용하십시오. 지정된 제한으로 인해 인 문서 수가 32MB 제한 내에서 발생해야합니다. 여러 필드에 정렬하는 경우

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

, 당신은 compound index에 추가해야합니다 :

난 당신이 ensureIndex 명령으로 정렬하려는 필드에 인덱스를 추가하는 것이 좋습니다 필드 온 정렬 (인덱스 문제의 필드 순서) :

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

_id 필드에 색인을 작성하면 제한없이 모든 레코드를 정렬 할 수 있습니다. 내가 틀렸다면 나를 바로 잡아라. – Vipin

+0

@ user3318102 _id의 색인은 자동으로 만들어 지므로 색인을 만들 필요가 없습니다. 당신은 맞습니다, 만약 당신이 _id 필드를 정렬한다면, 당신은 32MB 한도를 치지 않을 것입니다. –