개요
이 가이드 에서는 Ruby 운전자 사용하여 쿼리 지정하는 방법을 학습 수 있습니다.
쿼리 필터하다 를 만들어 쿼리 가 반환하는 문서 설정하다 를 구체화할 수 있습니다. 쿼리 필터하다 는 MongoDB 가 읽기 또는 쓰기 (write) 작업에서 문서를 일치시키는 데 사용하는 검색 기준을 지정하는 표현식 입니다. 쿼리 필터하다 에서는 운전자 에 쿼리 와 정확히 일치하는 문서를 검색 하도록 메시지를 표시하거나 보다 복잡한 일치 기준을 Express 하도록 쿼리 필터를 작성할 수 있습니다.
샘플 데이터
이 가이드 의 예제에서는 과일을 나타내는 문서가 포함된 fruits 컬렉션 에 대한 작업을 실행 . 다음 코드 예시 데이터베이스 와 컬렉션 만든 다음 컬렉션 에 샘플 문서를 삽입하는 방법을 보여 줍니다.
database = client.use('db') collection = database[:fruits] # Inserts documents representing fruits fruits = [ { _id: 1, name: 'apples', qty: 5, rating: 3, color: 'red', type: ['fuji', 'honeycrisp'] }, { _id: 2, name: 'bananas', qty: 7, rating: 4, color: 'yellow', type: ['cavendish'] }, { _id: 3, name: 'oranges', qty: 6, rating: 2, type: ['naval', 'mandarin'] }, { _id: 4, name: 'pineapples', qty: 3, rating: 5, color: 'yellow' } ] collection.insert_many(fruits)
정확히 일치
리터럴 값 쿼리는 쿼리 필터하다 와 정확히 일치하는 문서를 반환합니다.
다음 예시 에서는 쿼리 필터하다 를 find 메서드에 대한 매개 변수로 지정합니다. 이 코드는 color 필드 값이 'yellow' 인 모든 문서를 반환합니다.
filter = { color: 'yellow' } results = collection.find(filter) results.each do |doc| puts doc end
{"_id"=>2, "name"=>"bananas", "qty"=>7, "rating"=>4, "color"=>"yellow", "type"=>["cavendish"]} {"_id"=>4, "name"=>"pineapples", "qty"=>3, "rating"=>5, "color"=>"yellow"}
참고
모든 문서 찾기
컬렉션 의 모든 문서를 찾으려면 매개변수를 전달하지 않고 find 메서드를 호출합니다.
results = collection.find
비교 연산자
비교 연산자는 쿼리 필터하다 에 지정된 값을 기준으로 문서 필드 값을 평가합니다. 다음 목록에서는 일반적인 비교 연산자에 대해 설명합니다.
$gt: 지정된 필드 의 값이 지정된 값보다 큰 문서를 반환합니다.$lte: 지정된 필드 의 값이 지정된 값보다 작거나 같은 문서를 반환합니다.$ne: 지정된 필드의 값이 지정된 값과 다른 문서를 반환합니다.
팁
비교 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 비교 쿼리 연산자 가이드를 참조하세요.
다음 예시 에서는 쿼리 필터하다 의 비교 연산자 를 find 메서드에 대한 매개 변수로 지정합니다. 이 코드는 rating 필드 값이 2 보다 큰 모든 문서를 반환합니다.
filter = { rating: { '$gt' => 2 } } results = collection.find(filter) results.each do |doc| puts doc end
{"_id"=>1, "name"=>"apples", "qty"=>5, "rating"=>3, "color"=>"red", "type"=>["fuji", "honeycrisp"]} {"_id"=>2, "name"=>"bananas", "qty"=>7, "rating"=>4, "color"=>"yellow", "type"=>["cavendish"]} {"_id"=>4, "name"=>"pineapples", "qty"=>3, "rating"=>5, "color"=>"yellow"}
로직 연산
논리 연산자는 두 개 이상의 표현식 집합의 결과에 적용된 논리를 사용하여 문서를 일치시킵니다. 다음 목록에서는 각 논리 연산자 에 대해 설명합니다.
$and: 모든 절의 조건과 일치하는 문서를 반환합니다.$or: 한 절의 조건과 일치하는 문서를 반환합니다.$nor: 어떤 절의 조건과도 일치하지 않는 문서를 반환합니다.$not: 표현식과 일치하지 않는 문서를 반환합니다.
팁
논리 연산자에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 논리 쿼리 연산자 가이드를 참조하세요.
다음 예시 쿼리 필터하다 의 논리 연산자 find 메서드에 대한 매개 변수로 지정합니다. 이 코드는 qty 필드 값이 5 보다 크거나 color 필드 값이 'yellow'인 모든 문서를 반환합니다.
filter = { '$or' => [{ qty: { '$gt' => 5 } }, { color: 'yellow' }] } results = collection.find(filter) results.each do |doc| puts doc end
{"_id"=>2, "name"=>"bananas", "qty"=>7, "rating"=>4, "color"=>"yellow", "type"=>["cavendish"]} {"_id"=>3, "name"=>"oranges", "qty"=>6, "rating"=>2, "type"=>["naval", "mandarin"]} {"_id"=>4, "name"=>"pineapples", "qty"=>3, "rating"=>5, "color"=>"yellow"}
배열 연산자
배열 연산자는 배열 필드 에 있는 요소의 값 또는 수량을 기준으로 문서를 일치시킵니다. 다음 목록에서는 각 배열 연산자 대해 설명합니다.
$all: 쿼리 의 모든 요소를 포함하는 배열이 있는 문서를 반환합니다.$elemMatch: 배열 필드 의 요소가 쿼리 의 모든 조건과 일치하는 경우 문서를 반환합니다.$size: 지정된 크기의 배열이 있는 문서를 반환합니다.
팁
배열 연산자에 대해 자세히 알아보려면 매뉴얼의 배열 쿼리 연산자 가이드를 MongoDB Server 참조하세요.
다음 예시 에서는 쿼리 필터하다 의 배열 연산자 를 find 메서드에 대한 매개 변수로 지정합니다. 이 코드는 type 배열 필드 에 2 요소가 포함된 모든 문서를 반환합니다.
filter = { type: { '$size' => 2 } } results = collection.find(filter) results.each do |doc| puts doc end
{"_id"=>1, "name"=>"apples", "qty"=>5, "rating"=>3, "color"=>"red", "type"=>["fuji", "honeycrisp"]} {"_id"=>3, "name"=>"oranges", "qty"=>6, "rating"=>2, "type"=>["naval", "mandarin"]}
요소 연산자
요소 연산자는 필드 의 존재 여부 또는 유형에 따라 데이터를 쿼리 . 다음 목록에서는 각 요소 연산자 대해 설명합니다.
$exists: 지정된 필드 포함된 문서를 반환합니다.$type: 지정된 유형의 필드 포함된 문서를 반환합니다.
팁
요소 연산자에 대해 자세히 알아보려면 매뉴얼의 요소 쿼리 연산자 가이드를 MongoDB Server 참조하세요.
다음 예제에서는 쿼리 필터의 요소 연산자를 find 메서드에 대한 매개 변수로 지정합니다. 이 코드는 color 필드가 있는 모든 문서를 반환합니다.
filter = { color: { '$exists' => true } } results = collection.find(filter) results.each do |doc| puts doc end
{"_id"=>1, "name"=>"apples", "qty"=>5, "rating"=>3, "color"=>"red", "type"=>["fuji", "honeycrisp"]} {"_id"=>2, "name"=>"bananas", "qty"=>7, "rating"=>4, "color"=>"yellow", "type"=>["cavendish"]} {"_id"=>4, "name"=>"pineapples", "qty"=>3, "rating"=>5, "color"=>"yellow"}
평가 연산자
평가 연산자는 개별 필드 또는 전체 컬렉션 문서의 평가를 기반으로 데이터를 반환합니다. 다음 목록에서는 일반적인 요소 연산자에 대해 설명합니다.
$text: 문서에서 텍스트 검색 을 수행합니다.$regex: 지정된 정규 표현식 과 일치하는 문서를 반환합니다.$mod: 필드 값에 대해 모듈로 연산을 수행하고 나머지가 지정된 값인 문서를 반환합니다.
팁
평가 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 평가 쿼리 연산자 가이드를 참조하세요.
다음 예시 에서는 쿼리 필터하다 의 평가 연산자 를 find 메서드에 대한 매개 변수로 지정합니다. 이 코드는 정규 표현식 을 사용하여 name 필드 값에 연속된 'p' 문자가 두 개 이상 있는 모든 문서를 반환합니다.
filter = { name: /p{2,}/ } results = collection.find(filter) results.each do |doc| puts doc end
{"_id"=>1, "name"=>"apples", "qty"=>5, "rating"=>3, "color"=>"red", "type"=>["fuji", "honeycrisp"]} {"_id"=>4, "name"=>"pineapples", "qty"=>3, "rating"=>5, "color"=>"yellow"}
참고
이전 예시 와 같이 쿼리 필터하다 에 정규 표현식 값이 포함된 경우 Ruby 운전자 $regex 연산자 암시적으로 사용합니다.
추가 정보
문서 쿼리에 대해 자세히 학습하려면 MongoDB Server 매뉴얼의 문서 쿼리 를 참조하세요.
Ruby 운전자 사용하여 문서를 검색하는 방법에 대해 자세히 학습 문서 찾기 가이드 참조하세요.
API 문서
메서드에 대해 find 자세히 학습 API 설명서를 참조하세요.