Retrieve Data
개요
이 가이드에서는 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 }
이 데이터는 다음 Kotlin 데이터 클래스로 모델링됩니다.
data class PaintOrder( val id: Int, val qty: Int, val color: String )
찾기 작업
찾기 작업을 사용하여 MongoDB에서 기존 데이터의 하위 집합을 검색할 수 있습니다. 검색할 문서, 검색 순서, 검색할 문서 수 등 반환할 데이터를 지정할 수 있습니다.
찾기 작업을 수행하려면 MongoCollection
의 인스턴스에서 find()
메서드를 호출합니다. 이 메서드는 제공된 쿼리 필터와 일치하는 문서 컬렉션을 검색합니다. 쿼리 지정 방법에 대한 자세한 내용은 쿼리 지정 가이드를 참조하세요.
예시
주인은 paint_order 컬렉션에서 3개 이상 9개 미만의 페인트 캔이 포함된 주문을 알고 싶습니다.
이 시나리오를 해결하기 위해 매장 주인은 기준과 일치하는 주문을 찾습니다.
val filter = Filters.and(Filters.gt("qty", 3), Filters.lt("qty", 9)) val resultsFlow = collection.find(filter) resultsFlow.collect { println(it) }
PaintOrder(id=2, qty=8, color=green) PaintOrder(id=3, qty=4, color=purple)
매장 주인이 이 쿼리를 실행하면 기준과 일치하는 두 개의 주문이 검색됩니다.
필터 작성 방법에 대한 자세한 내용은 필터 빌더 가이드를 참조하세요.
실행 가능한 find()
예시는 여러 문서 찾기 페이지를 참조하세요.
애그리게이션 작업
집계 작업을 사용하여 집계 파이프라인의 단계를 수행합니다. 집계 파이프라인은 집계된 결과를 생성하는 다단계 변환입니다.
집계 작업을 수행하려면 MongoCollection
의 인스턴스에서 aggregate()
메서드를 호출합니다. 이 메서드는 실행할 집계 표현식을 순서대로 허용합니다. 집계를 수행하려면 문서 일치, 필드 이름 변경, 값 그룹화 방법을 지정하는 집계 단계를 정의하면 됩니다. 자세한 내용은 집계 가이드를 참조하세요.
예시
소유자는 paint_order 컬렉션에서 가장 많이 구매된(가장 많이 판매된) 페인트 색상을 알고 싶어합니다.
이 시나리오를 해결하기 위해 매장 주인은 다음과 같은 집계 파이프라인을 만듭니다.
paint_order
컬렉션의 모든 문서와 일치색상별로 주문 그룹화
색상별로 수량 필드 합산
결과 순서를 가장 높은 수량에서 가장 낮은 수량 순으로 지정
data class AggregationResult( val id: String, val qty: Int) val filter = Filters.empty() val pipeline = listOf( Aggregates.match(filter), Aggregates.group( "\$color", Accumulators.sum("qty", "\$qty") ), Aggregates.sort(Sorts.descending("qty")) ) val resultsFlow = collection.aggregate<AggregationResult>(pipeline) resultsFlow.collect { println(it) }
PaintOrder(id=2, qty=8, color=green) PaintOrder(id=3, qty=4, color=purple)
매장 주인이 집계를 실행한 후 '녹색'이 가장 많이 구매된 색상이라는 것을 알게 됩니다.
집계 파이프라인을 구성하는 방법에 대한 자세한 내용은 애그리게이션에 대한 MongoDB 서버 매뉴얼 페이지를 참조하세요 .
이 페이지에 언급된 메서드에 대한 추가 정보는 다음 API 설명서를 참조하세요.