MongoDB의 정방향 페이징: 건너뛰기 및 제한을 사용하는 페이지 매김의 대안
페이지 매김은 관리 가능한 청크의 데이터를 검색하는 데 사용되는 일반적인 기술입니다. MongoDB의 .skip() 및 .limit() 수정자를 사용하여 페이지 매김을 구현하는 것이 일반적인 접근 방식이지만 메모리 소비로 인해 대규모 데이터 세트를 처리할 때 비효율적일 수 있습니다.
"정방향 페이징"이라고 알려진 대체 솔루션은 _id 필드의 자연 순서를 활용하여 이 문제를 극복합니다. 그러나 후속 쿼리에 대해 마지막 문서의 _id를 얻는 것은 어려울 수 있습니다.
_id별 자연 순서를 사용한 전달 페이징
앞으로 페이징을 사용하면 본질적으로 문서를 통해 "앞으로 이동"할 수 있습니다. 특정 페이지로 이동하거나 돌아가는 것이 아니라 결과를 보여줍니다. 기본 개념은 페이지에서 마지막 문서의 _id를 찾아서 다음 페이지의 하한으로 사용하는 것입니다.
예는 다음과 같습니다.
// Page 1 var cursor = db.users.find().limit(pageSize); var doc = cursor.next(); var last_id = doc._id; // Page 2 var cursor = db.users.find({'_id'> last_id}). limit(10);
이 접근 방식은 다음 세트를 효율적으로 검색합니다. 과도한 메모리를 소비하지 않고 문서를 처리합니다.
사용자 정의 정렬 기준을 사용한 정방향 페이징
자연 순서 _id는 정방향 페이징을 단순화하지만 사용자 정의 정렬 기준을 사용하면 더욱 복잡해집니다. 한 가지 접근 방식은 마지막으로 본 문서의 순위(또는 다른 정렬 필드)와 이미 검색된 _ids 목록을 모두 추적하는 것입니다.
예는 다음과 같습니다.
// Page 1 var seenIds = []; var lastSeenRank = null; var cursor = db.junk.find().sort({ "rank": -1 }).limit(2); // ... // Page 2 var cursor = db.junk.find( { "_id": { "$nin": seenIds }, "rank": "$lte": lastSeenRank } ).sort({ "rank": -1 }).limit(2);
이렇게 하면 이미 제외할 수 있습니다. 문서를 보고 원하는 정렬 순서를 유지하세요.
결론
MongoDB를 사용한 정방향 페이징은 특히 대규모 데이터 세트를 처리할 때 효율적인 페이지 매김 솔루션을 제공합니다. 성능 저하 없이 특정 범위의 데이터를 검색할 수 있지만 쉽게 역추적하거나 특정 페이지로 이동할 수 없는 등 몇 가지 제한 사항이 있습니다. 이러한 개념을 이해하면 MongoDB 애플리케이션에서 이 접근 방식을 효과적으로 활용할 수 있습니다.
위 내용은 MongoDB의 Forward Paging이 기존 페이지 매김의 대안을 제공할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!