쿼리 지정
개요
이 가이드 에서는 코틀린 동기 (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( 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 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.