개요
이 가이드에서는 MongoDB 데이터베이스에서 데이터를 검색하는 방법에 대해 설명합니다. 데이터를 검색하려면 읽기 작업을 사용합니다.
읽기 작업을 통해 다음을 수행할 수 있습니다.
찾기 작업을 사용하여 컬렉션에서 문서의 하위 집합을 검색합니다.
애그리게이션 작업을 사용하여 컬렉션에서 검색된 문서에서 변환 수행
변경 스트림을 사용하여 데이터베이스 의 실시간 변경 사항 모니터링
예시용 샘플 데이터
다음 섹션에서는 페인트 매장 주인이 고객 주문을 관리하는 방법에 대한 예를 제공합니다. 매장 주인은 각 주문에 대해 paint_order
컬렉션의 color
및 qty
필드에 해당하는 색상과 수량을 추적합니다.
{ "_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 설명서를 참조하세요.