Docs Menu
Docs Home
/ / /
Java 동기화 드라이버
/ / /

Retrieve Data

이 페이지의 내용

  • 개요
  • 찾기 작업
  • 애그리게이션 작업

이 가이드에서는 MongoDB 데이터베이스에서 데이터를 검색하는 방법에 대해 설명합니다. 데이터를 검색하려면 읽기 작업을 사용합니다.

읽기 작업을 통해 다음을 수행할 수 있습니다.

  • 찾기 작업을 사용하여 컬렉션에서 문서의 하위 집합을 검색합니다.

  • 애그리게이션 작업을 사용하여 컬렉션에서 검색된 문서에서 변환 수행

  • 변경 스트림을 사용하여 데이터베이스 의 실시간 변경 사항 모니터링

다음 섹션에서는 페인트 매장 주인이 고객 주문을 관리하는 방법에 대한 예를 제공합니다. 매장 주인은 각 주문에 대해 paint_order 컬렉션의 colorqty 필드에 해당하는 색상과 수량을 추적합니다.

{ "_id": 1, "color": "purple", "qty": 10 }
{ "_id": 2, "color": "green", "qty": 8 }
{ "_id": 3, "color": "purple", "qty": 4 }
{ "_id": 4, "color": "green", "qty": 11 }

찾기 작업을 사용하여 MongoDB에서 기존 데이터의 하위 집합을 검색할 수 있습니다. 검색할 문서, 검색 순서, 검색할 문서 수 등 반환할 데이터를 지정할 수 있습니다.

찾기 작업을 수행하려면 find() MongoCollection인스턴스에서 메서드를 호출합니다. 이 메서드는 제공된 쿼리 필터와 일치하는 문서 collection을 검색합니다. 쿼리 지정 방법에 대한 자세한 내용은 쿼리 지정 가이드를 참조하세요.

주인은 paint_order 컬렉션에서 3개 이상 9개 미만의 페인트 캔이 포함된 주문을 알고 싶습니다.

이 시나리오를 해결하기 위해 매장 주인은 기준과 일치하는 주문을 찾습니다.

Bson filter = Filters.and(Filters.gt("qty", 3), Filters.lt("qty", 9));
// Retrieves documents that match the filter and prints them as JSON
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

필터 작성 방법에 대한 자세한 내용은 필터 빌더 가이드를 참조하세요.

다음은 앞선 쿼리의 출력입니다:

{ "_id": 2, "color": "green", "qty": 8 }
{ "_id": 3, "color": "purple", "qty": 4 }

매장 주인이 이 쿼리를 실행하면 기준과 일치하는 두 개의 주문이 검색됩니다.

실행 가능한 find() 예시는 여러 문서 찾기 페이지를 참조하세요.

집계 작업을 사용하여 집계 파이프라인의 단계를 수행합니다. 집계 파이프라인은 집계된 결과를 생성하는 다단계 변환입니다.

집계 작업을 수행하려면 MongoCollection의 인스턴스에서 aggregate() 메서드를 호출합니다. 이 메서드는 실행할 집계 표현식을 순서대로 허용합니다. 집계를 수행하려면 문서 일치, 필드 이름 변경, 값 그룹화 방법을 지정하는 집계 단계를 정의하면 됩니다. 자세한 내용은 집계 가이드를 참조하세요.

소유자는 paint_order 컬렉션에서 가장 많이 구매된(가장 많이 판매된) 페인트 색상을 알고 싶어합니다.

이 시나리오를 해결하기 위해 매장 주인은 다음과 같은 집계 파이프라인을 만듭니다.

  • paint_order 컬렉션의 모든 문서와 일치

  • 색상별로 주문 그룹화

  • 색상별로 수량 필드 합산

  • 결과 순서를 가장 높은 수량에서 가장 낮은 수량 순으로 지정

Bson filter = Filters.empty();
// Prints the collection's "color" values and each value's frequency in descending frequency order
collection.aggregate(Arrays.asList(
Aggregates.match(filter),
Aggregates.group("$color", Accumulators.sum("qty", "$qty")),
Aggregates.sort(Sorts.descending("qty"))))
.forEach(doc -> System.out.println(doc.toJson()));

다음은 앞에 설명한 집계 결과를 보여줍니다.

{ "_id": "green", "qty": 19 }
{ "_id": "purple", "qty": 14 }

매장 주인이 집계를 실행한 후 '녹색'이 가장 많이 구매된 색상이라는 것을 알게 됩니다.

집계 파이프라인을 구성하는 방법에 대한 자세한 내용은 애그리게이션에 대한 MongoDB Server 매뉴얼 페이지를 참조하세요 .

이 페이지에 언급된 메서드에 대한 추가 정보는 다음 API 설명서를 참조하세요.

돌아가기

읽기