Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
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 }

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

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

애그리게이션 작업을 수행하려면 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 설명서를 참조하세요.

돌아가기

읽기

이 페이지의 내용