Docs Menu
Docs Home
/ / /
Java 동기화
/ / /

반환된 결과 건너뛰기

이 페이지의 내용

  • 개요
  • 예시
  • FindIterable 사용
  • 집계 사용하기

이 가이드에서는 MongoDB Java 드라이버를 사용하여 읽기 작업에서 반환된 지정된 수의 결과를 건너뛰는 방법을 배울 수 있습니다.

skip() 메서드를 사용하여 쿼리의 반환된 결과에 대한 결과를 건너뛸 수 있습니다. $skip 집계 단계를 지정하여 집계 파이프라인의 특정 단계에서 문서를 건너뛸 수도 있습니다.

메서드는 skip() FindIterable에서반환된 문서 목록의 시작 부분에서 생략할 문서 수를 지정하는 정수를 사용합니다.

다음과 같이 skip() 메서드를 사용하여 처음 두 문서를 건너뛸 수 있습니다.

collection.find().skip(2);

Aggregates.skip() 집계 파이프라인의 선택적 단계로, 이전 단계의 결과 시작 부분에서 생략할 문서 수를 지정합니다.

다음과 같이 Aggregates.skip() 메서드를 사용하여 처음 두 문서를 건너뛸 수 있습니다.

import com.mongodb.client.model.Aggregates;
collection.aggregate(Arrays.asList(Aggregates.match(), Aggregates.skip(2)));

다음 예는 8가지 색상의 페인트를 판매하는 페인트 가게에 관한 예입니다. 가장 좋은 색상은 다른 색상보다 더 빨리 판매됩니다. 어느 날 고객이 가장 많이 판매되는(재고가 가장 낮은) 색상 세 가지가 무엇인지 질문합니다. 페인트 가게는 collection의 필드에 있는 재고를 qty paint_inventory 추적합니다.

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 10 }
{ "_id": 3, "color": "blue", "qty": 9 }
{ "_id": 4, "color": "white", "qty": 6 }
{ "_id": 5, "color": "yellow", "qty": 11 }
{ "_id": 6, "color": "pink", "qty": 3 }
{ "_id": 7, "color": "green", "qty": 8 }
{ "_id": 8, "color": "orange", "qty": 7 }

이 시나리오를 해결하려면 페인트 매장에서 빈 필터를 사용하여 paint_inventory collection을 쿼리하고 qty 필드를 기준으로 문서를 정렬하고 처음 5개의 결과를 생략해야 합니다.

import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Sorts;
// <MongoCollection setup code here>
Bson filter = Filters.empty();
collection.find(filter)
.sort(Sorts.descending("qty"))
.skip(5)
.forEach(doc -> System.out.println(doc.toJson()));
  • find() 메서드는 모든 문서를 반환합니다.

  • sort() 메서드는 qty 필드를 기준으로 가장 높은 문서부터 가장 낮은 문서까지 표시할 문서를 지정합니다.

  • skip() 메서드는 처음 5개의 문서를 생략하도록 지정합니다.

import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Sorts;
import com.mongodb.client.model.Aggregates;
// <MongoCollection setup code here>
Bson filter = Filters.empty();
collection.aggregate(Arrays.asList(
Aggregates.match(filter),
Aggregates.sort(Sorts.descending("qty")),
Aggregates.skip(5)))
.forEach(doc -> System.out.println(doc.toJson()));
  • match() 단계는 모든 문서를 반환합니다.

  • sort() 단계에서는 qty 필드를 기준으로 가장 높은 문서부터 가장 낮은 문서까지 표시할 문서를 지정합니다.

  • skip() 단계는 처음 5개의 문서를 생략하도록 지정합니다.

다음은 앞의 두 쿼리 모두의 출력을 보여줍니다.

{ "_id": 4, "color": "white", "qty": 6 }
{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 6, "color": "pink", "qty": 3 }

페인트 가게에서 쿼리를 실행한 후 가장 많이 판매되는 세 가지 색상인 분홍, 빨강, 흰색을 발견했습니다.

참고

건너뛰기 값이 쿼리에 대해 일치하는 문서 수보다 크거나 같으면 해당 쿼리는 문서를 반환하지 않습니다.

앞의 예의 skip() 메서드가 처음 9개의 문서를 건너뛰면 지정된 수량이 일치하는 문서 수를 초과하기 때문에 결과가 반환되지 않습니다.

Bson filter = Filters.empty();
collection.find(filter)
.sort(Sorts.descending("qty"))
.skip(9)
.forEach(doc -> System.out.println(doc.toJson()));

돌아가기

결과 정렬