MongoDB의 페이지 매김 기술: Skip()의 한계를 넘어서
MongoDB의 Skip() 메소드에 의존하는 것은 널리 알려져 있습니다. 페이지 매김은 데이터가 증가함에 따라 성능 문제로 이어질 수 있습니다. 이 문제를 해결하기 위한 대안적인 접근 방식은 페이지 매김을 위해 _id 필드의 자연 순서를 활용하는 것입니다.
마지막 문서의 ID
이 기술의 핵심은 다음에 있습니다. 이전 페이지에서 마지막 문서의 ID를 결정한 후 다음 페이지의 시작점으로 사용합니다. 그러나 초보자의 경우 마지막 ID를 식별하는 것이 어려울 수 있습니다.
_id 순서를 사용한 정방향 페이지 매김
뒤방향 페이지 매김 또는 특정 페이지로 건너뛰기가 불가능한 시나리오의 경우 필요하다면 "포워드 페이징(forward paging)"이라는 개념을 사용할 수 있습니다. 이 기술에는 커서를 반복하고 후속 쿼리를 위해 마지막으로 본 문서의 _id를 저장하는 작업이 포함됩니다.
_id 순서 지정의 예:
cursor = db.junk.find().limit(3); while (cursor.hasNext()) { doc = cursor.next(); if (!cursor.hasNext()) lastSeen = doc._id; }
복잡한 순서 지정
_id 외에 다른 주문 필드를 사용하면 추가적인 복잡성이 발생합니다. 개념은 동일하지만 $nin 연산자를 사용하여 이전에 본 문서를 제외해야 합니다.
순위 순서의 예:
seenIds = []; cursor = db.junk.find({ "_id": { "$nin": seenIds }, "rank": "$lte": lastSeen } ).sort({ "rank": -1 }).limit(2); while (cursor.hasNext()) { doc = cursor.next(); seenIds.push(doc._id); if (!cursor.hasNext() || lastSeen == null) lastSeen = doc.rank; }
결론:
앞으로 페이징은 뒤로 페이지 매김이 필요하지 않은 시나리오에서 실행 가능한 옵션입니다. $nin 연산자를 활용하고 표시된 문서 ID를 관리함으로써 이 기술은 Skip()과 관련된 메모리 소비 문제 없이 효율적인 페이지 매김을 제공합니다.
위 내용은 순서 지정을 통한 순방향 페이지 매김이 MongoDB의 페이지 매김 제한을 제거할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!