> 백엔드 개발 > Golang > mgo.v2를 사용하여 효율적인 MongoDB 페이지 매김을 어떻게 달성할 수 있습니까?

mgo.v2를 사용하여 효율적인 MongoDB 페이지 매김을 어떻게 달성할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-21 17:42:09
원래의
698명이 탐색했습니다.

How Can I Achieve Efficient MongoDB Pagination with mgo.v2?

mgo를 사용한 효율적인 MongoDB 페이지 매김

MongoDB는 Query.Skip() 및 Query.Limit()을 사용하여 페이지 매김을 기본적으로 지원합니다. 그러나 MongoDB는 건너뛰어야 하는 문서를 생략하기 위해 모든 결과 문서를 반복해야 하기 때문에 대규모 결과 세트의 경우 이 방법이 느릴 수 있습니다.

MongoDB는cursor.min() 기능을 제공하여 솔루션을 제공합니다. 결과를 나열할 첫 번째 색인 항목을 지정할 수 있습니다. 불행하게도 mgo.v2 드라이버에는 커서.min()을 지정하는 API 호출이 없습니다.

mgo.v2와 함께 MongoDB의cursor.min() 기능을 사용하여 효율적인 페이징을 달성하려면 Database.Run을 사용할 수 있습니다. () 메소드를 사용하면 MongoDB 명령을 직접 실행할 수 있습니다. find 명령은 min 인수 지정을 지원합니다.

각 결과 배치 후에 쿼리 결과의 마지막 문서에서 최소 문서를 생성하고 다음 배치에 대한 쿼리를 실행하기 전에 이를 설정할 수 있습니다. 최소 문서에는 쿼리를 실행하는 데 사용되는 인덱스 항목의 값이 포함되어야 합니다.

이 프로세스는 답변에 설명된 대로 수동으로 수행하거나 github.com/과 같은 타사 라이브러리를 사용할 수 있습니다. icza/minquery는 커서 지정을 포함하여 MongoDB 찾기 명령을 구성하고 실행하기 위한 래퍼를 제공합니다.

minquery를 사용하면 다음과 같이 최소 커서를 지정할 수 있습니다. this:

q := minquery.New(session.DB(""), "users", bson.M{"country": "USA"}).
    Sort("name", "_id").Limit(10).
    Cursor(cursor)
로그인 후 복사

여기서 커서는 이전 배치에서 얻은 커서입니다.

MinQuery.All()을 사용할 때 커서 필드의 이름을 마지막 논쟁. 또한 부분 결과를 검색하는 경우 MinQuery.All()에 모든 값이 필요하므로 직접 사용하지 않더라도 커서(인덱스 항목)의 일부인 모든 필드를 포함해야 합니다. 커서 필드를 사용하여 적절한 커서 값을 생성하세요.

위 내용은 mgo.v2를 사용하여 효율적인 MongoDB 페이지 매김을 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿