문서 메뉴
문서 홈
/ / /
Kotlin 코루틴
/ / /

데이터 조회

이 페이지의 내용

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

이 가이드에서는 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 }

이 데이터는 다음 Kotlin 데이터 클래스로 모델링됩니다.

data class PaintOrder(
@BsonId 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(@BsonId 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 설명서를 참조하세요.

돌아가기

읽기 작업

다음

흐름에서 데이터 액세스