정렬 mongo 정렬을 사용하는 2 백만 개의 레코드가 가능합니까 또는 아닌가?MongoDB 2.6 정렬 쿼리의 최대 한도
MongoDB 문서에서 "정렬 작업이 32 메가 바이트를 소비하면 MongoDB는 오류를 반환합니다."
그러나 엄청난 수의 레코드를 정렬해야한다는 요구 사항이 있습니다. 그것을하는 방법?
정렬 mongo 정렬을 사용하는 2 백만 개의 레코드가 가능합니까 또는 아닌가?MongoDB 2.6 정렬 쿼리의 최대 한도
MongoDB 문서에서 "정렬 작업이 32 메가 바이트를 소비하면 MongoDB는 오류를 반환합니다."
그러나 엄청난 수의 레코드를 정렬해야한다는 요구 사항이 있습니다. 그것을하는 방법?
가능합니다. MongoDB가 인덱스를 사용하지 않고 메모리 내에서 데이터를 정렬 할 때에 만 32MB 제한이 있다는 문서가 있습니다.
정렬 작업이 32MB를 초과하면 MongoDB 은 오류를 반환합니다. 이 오류를 방지하려면 인덱스를 작성하여 정렬 작업을 지원하거나 limit()과 함께 sort()를 사용하십시오. 지정된 제한으로 인해 인 문서 수가 32MB 제한 내에서 발생해야합니다. 여러 필드에 정렬하는 경우
db.coll.ensureIndex({ sortFieldName : 1});
, 당신은 compound index에 추가해야합니다 :
난 당신이 ensureIndex
명령으로 정렬하려는 필드에 인덱스를 추가하는 것이 좋습니다 필드 온 정렬 (인덱스 문제의 필드 순서) :
db.coll.ensureIndex({ sortFieldName1 : 1, sortFieldName2 : 1});
_id 필드에 색인을 작성하면 제한없이 모든 레코드를 정렬 할 수 있습니다. 내가 틀렸다면 나를 바로 잡아라. – Vipin
@ user3318102 _id의 색인은 자동으로 만들어 지므로 색인을 만들 필요가 없습니다. 당신은 맞습니다, 만약 당신이 _id 필드를 정렬한다면, 당신은 32MB 한도를 치지 않을 것입니다. –
유사 SO 답변 : https://stackoverflow.com/questions/27023622/overflow-sort-stage-buffered-data-usage-exceeds - 내부 제한 – dkb