Docs Menu
Docs Home
/ / /
Kotlin Sync 드라이버
/

쿼리 지정

이 페이지의 내용

  • 개요
  • 샘플 데이터
  • 정확히 일치
  • 비교 연산자
  • 로직 연산
  • 배열 연산자
  • 요소 연산자
  • 평가 연산자
  • 추가 정보
  • API 문서

이 가이드 에서는 코틀린 동기 (Kotlin Sync) 운전자 를 사용하여 쿼리 를 지정하는 방법을 학습 수 있습니다.

쿼리 필터 를 만들어 쿼리가 반환하는 문서 세트를 구체화할 수 있습니다. 쿼리 필터는 MongoDB 가 읽기 또는 쓰기 작업에서 문서를 일치시키는 데 사용하는 Atlas Search 기준을 지정하는 표현식입니다. 쿼리 필터에서는 드라이버가 쿼리와 정확히 일치하는 문서를 Atlas Search에 표시하도록 요청하거나 쿼리 필터를 Express 하여 보다 복잡한 일치 기준을 표현할 수 있습니다.

이 가이드의 예제에서는 다음 문서가 포함된 fruits 컬렉션에서 작업을 실행합니다.

{ "_id": 1, "name": "apples", "quantity": 5, "rating": 3, "color": "red", "type": ["fuji", "honeycrisp"] },
{ "_id": 2, "name": "bananas", "quantity": 7, "rating": 4, "color": "yellow", "type": ["cavendish"] },
{ "_id": 3, "name": "oranges", "quantity": 6, "rating": 2, "type": ["naval", "mandarin"] },
{ "_id": 4, "name": "pineapple", "quantity": 3, "rating": 5, "color": "yellow" },

이 컬렉션 의 문서는 다음 코틀린 (Kotlin) 데이터 클래스에 따라 모델링됩니다.

data class Fruit(
@BsonId
val id: Int,
val name: String,
val quantity: Int,
val rating: Int,
val color: String,
val type: List<String>
)

다음 코드 예시에서는 데이터베이스와 컬렉션을 만든 다음 컬렉션에 샘플 문서를 삽입하는 방법을 보여 줍니다.

val uri = "<connection string URI>"
val settings = MongoClientSettings.builder()
.applyConnectionString(ConnectionString(uri))
.retryWrites(true)
.build()
val mongoClient = MongoClient.create(settings)
val database = mongoClient.getDatabase("sample_fruit")
val collection = database.getCollection<Fruit>("fruits")
collection.insertMany(listOf(
Fruit(1, "apples", 5, 3, "red", listOf("fuji", "honeycrisp")),
Fruit(2, "bananas", 7, 4, "yellow", listOf("cavendish")),
Fruit(3, "oranges", 6, 2, null, listOf("naval", "mandarin")),
Fruit(4, "pineapples", 3, 5, "yellow", null)
))

리터럴 값 쿼리는 쿼리 필터와 정확히 일치하는 문서를 반환합니다.

다음 예시 에서는 쿼리 필터하다 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 color 필드 값이 "yellow" 인 모든 문서를 반환합니다.

val results = collection.find(eq(Fruit::color.name, "yellow"))
results.forEach { result ->
println(result);
}
Fruit(id=2, name=bananas, quantity=7, rating=4, color=yellow, type=[cavendish])
Fruit(id=4, name=pineapples, quantity=3, rating=5, color=yellow, type=null)

비교 연산자는 쿼리 필터의 지정된 값을 기준으로 문서 필드 값을 평가합니다. 다음은 일반적인 비교 연산자 목록입니다.

  • $gt: 보다 큼

  • $lte: 보다 작거나 같음

  • $ne: 같지 않음

비교 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 비교 쿼리 연산자 가이드를 참조하세요.

다음 예시 에서는 쿼리 필터하다 의 비교 연산자 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 rating 필드 값이 2 보다 큰 모든 문서를 반환합니다.

val results = collection.find(gt(Fruit::rating.name, 2))
results.forEach { result ->
println(result)
}
Fruit(id=1, name=apples, quantity=5, rating=3, color=red, type=[fuji, honeycrisp])
Fruit(id=2, name=bananas, quantity=7, rating=4, color=yellow, type=[cavendish])
Fruit(id=4, name=pineapples, quantity=3, rating=5, color=yellow, type=null)

논리 연산자는 두 개 이상의 표현식 집합의 결과에 적용된 논리를 사용하여 문서를 일치시킵니다. 다음은 논리 연산자 목록입니다.

  • $and모든 절의 조건과 일치하는 모든 문서를 반환합니다.

  • $or 절의 조건과 일치하는 모든 문서를 반환합니다.

  • $nor, 어떤 절의 조건과도 일치 하지 않는 모든 문서를 반환합니다.

  • $not표현식과 일치 하지 않는 모든 문서를 반환합니다.

논리 연산자에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 논리 쿼리 연산자 가이드를 참조하세요.

다음 예시 에서는 쿼리 필터하다 의 논리 연산자 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 quantity 필드 값이 5 보다 크 거나 color 필드 값이 "yellow" 인 모든 문서를 반환합니다.

val results = collection.find(
or(
gt(Fruit::quantity.name, 5),
eq(Fruit::color.name, "yellow")
)
)
results.forEach { result ->
println(result)
}
Fruit(id=2, name=bananas, quantity=7, rating=4, color=yellow, type=[cavendish])
Fruit(id=3, name=oranges, quantity=6, rating=2, color=null, type=[naval, mandarin])
Fruit(id=4, name=pineapples, quantity=3, rating=5, color=yellow, type=null)

배열 연산자는 배열 필드에 있는 요소의 값 또는 수량을 기준으로 문서를 일치시킵니다. 다음은 사용 가능한 배열 연산자 목록입니다.

  • $all쿼리의 모든 요소를 포함하는 배열이 있는 문서를 반환합니다.

  • $elemMatch배열 필드의 요소가 쿼리의 모든 조건과 일치하는 경우 문서를 반환합니다.

  • $size지정된 크기의 배열이 있는 모든 문서를 반환합니다.

배열 연산자에 대해 자세히 알아보려면 매뉴얼의 배열 쿼리 연산자 가이드를 MongoDB Server 참조하세요.

다음 예시 에서는 쿼리 필터하다 의 배열 연산자 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 정확히 2 요소를 포함하는 type 배열 필드 가 있는 모든 문서를 반환합니다.

val results = collection.find(size(Fruit::type.name, 2))
results.forEach { result ->
println(result)
}
Fruit(id=1, name=apples, quantity=5, rating=3, color=red, type=[fuji, honeycrisp])
Fruit(id=3, name=oranges, quantity=6, rating=2, color=null, type=[naval, mandarin])

요소 연산자는 필드의 존재 여부 또는 유형에 따라 데이터를 쿼리합니다.

요소 연산자에 대해 자세히 알아보려면 매뉴얼의 요소 쿼리 연산자 가이드를 MongoDB Server 참조하세요.

다음 예시 에서는 쿼리 필터하다 의 요소 연산자 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 color 필드 가 있는 모든 문서를 반환합니다.

val results = collection.find(exists(Fruit::color.name))
results.forEach { result ->
println(result)
}
Fruit(id=1, name=apples, quantity=5, rating=3, color=red, type=[fuji, honeycrisp])
Fruit(id=2, name=bananas, quantity=7, rating=4, color=yellow, type=[cavendish])
Fruit(id=4, name=pineapples, quantity=3, rating=5, color=yellow, type=null)

평가 연산자는 개별 필드 또는 전체 컬렉션 문서의 평가를 기반으로 데이터를 반환합니다.

다음은 일반적인 평가 연산자 목록입니다.

  • $text문서에 대해 텍스트 Atlas Search를 수행합니다.

  • $regex지정된 정규 표현식과 일치하는 문서를 반환합니다.

  • $mod모듈로 를 수행합니다. 필드 값에 대한 연산을 수행하고 나머지가 지정된 값인 문서를 반환합니다.

평가 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 평가 쿼리 연산자 가이드를 참조하세요.

다음 예시 에서는 쿼리 필터하다 의 평가 연산자 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 정규 표현식 을 사용하여 "p" 문자가 두 개 이상 연속된 name 필드 값이 있는 모든 문서를 반환합니다.

val results = collection.find(regex(Fruit::name.name, "p{2,}"))
results.forEach { result ->
println(result)
}
Fruit(id=1, name=apples, quantity=5, rating=3, color=red, type=[fuji, honeycrisp])
Fruit(id=4, name=pineapples, quantity=3, rating=5, color=yellow, type=null)

문서 쿼리에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 문서 쿼리 가이드를 참조하세요.

코틀린 동기 (Kotlin Sync) 운전자 를 사용한 문서 검색에 학습 보려면 데이터 검색을 참조하세요.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

MongoDB에서 데이터 읽기