개요
이 가이드 에서는 Ruby 운전자를 사용하여 읽기 작업을 통해 MongoDB 컬렉션 에서 데이터를 조회 방법을 학습 수 있습니다. 컬렉션 에서 find
메서드를 호출하여 기준의 설정하다 과 일치하는 문서를 조회 할 수 있습니다.
샘플 데이터
이 가이드 의 예제에서는 Atlas 샘플 데이터 세트의 sample_training
데이터베이스 에 있는 companies
컬렉션 사용합니다. Ruby 애플리케이션 에서 이 컬렉션 에 액세스 하려면 Atlas cluster 에 연결하는 Mongo::Client
객체 만들고 database
및 collection
변수에 다음 값을 할당합니다.
database = client.use('sample_training') collection = database[:companies]
무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 Atlas 시작하기 가이드 를 참조하세요.
문서 찾기
컬렉션 에서 문서를 조회 하려면 find
메서드를 사용합니다. 이 메서드는 쿼리 Mongo::Collection::View
필터하다 매개변수를 사용하고 쿼리 나타내는 객체 반환합니다. 운전자 first
또는 each
과 같은 메서드를 사용하여 결과를 가져올 때까지 쿼리 실행을 연기합니다. 결과를 요청 후 운전자 서버 에 쿼리 보내고 결과 액세스 할 수 있는 Mongo::Cursor
객체 반환합니다.
옵션 메서드를 find
메서드에 연결하여 작업 결과를 구체화할 수 있습니다.
팁
쿼리 필터에 학습 보려면 쿼리 지정 가이드 를 참조하세요.
여러 문서 찾기
컬렉션에서 여러 문서를 찾으려면 검색하려는 문서의 기준을 지정하는 find
메서드에 쿼리 필터를 전달합니다.
다음 예시 에서는 find
메서드를 사용하여 founded_year
필드 에 1970
값이 있는 모든 문서를 찾습니다.
results = collection.find(founded_year: 1970)
쿼리 나타내는 Mongo::Collection::View
객체 에서 each
메서드를 호출하면 운전자 Mongo::Cursor
객체 반환합니다. 커서 애플리케이션 주어진 시간에 데이터베이스 결과의 하위 집합만 메모리에 유지하면서 데이터베이스 결과를 반복할 수 있는 메커니즘입니다. 커서는 find
메서드가 많은 양의 문서를 반환할 때 유용합니다.
다음 코드는 each
메서드를 호출하여 쿼리 결과를 반복합니다.
results.each do |doc| puts doc end
{"_id"=>BSON::ObjectId('...'), "name"=>"Mitsubishi Motors", "permalink"=>"mitsubishi-motors", "crunchbase_url"=>"http://www.crunchbase.com/company/mitsubishi-motors", "homepage_url"=>"http://www.mitsubishi-motors.com", ...} {"_id"=>BSON::ObjectId('...'), "name"=>"Western Digital", "permalink"=>"western-digital", "crunchbase_url"=>"http://www.crunchbase.com/company/western-digital", "homepage_url"=>"http://www.wdc.com/en", ...} {"_id"=>BSON::ObjectId('...'), "name"=>"Celarayn", "permalink"=>"celarayn", "crunchbase_url"=>"http://www.crunchbase.com/company/celarayn", "homepage_url"=>"http://www.celarayn.es", ...}
참고
모든 문서 찾기
컬렉션 의 모든 문서를 찾으려면 쿼리 필터하다 전달하지 않고 find
메서드를 호출합니다.
results = collection.find
하나의 문서 찾기
컬렉션 에서 단일 문서 찾으려면 find
메서드를 호출하고 찾으려는 문서 의 기준을 지정하는 쿼리 필터하다 전달합니다. 그런 다음 first
메서드를 find
에 연결합니다.
쿼리 필터하다 둘 이상의 문서 와 일치하는 경우 first
메서드는 작업 결과에서 첫 번째 로 일치하는 문서 검색합니다.
다음 예시 first
메서드를 find
에 연결하여 name
필드 값이 'LinkedIn'
인 첫 번째 문서 찾습니다.
document = collection.find(name: 'LinkedIn').first puts document
{"_id"=>BSON::ObjectId('...'), "name"=>"LinkedIn", "permalink"=>"linkedin", "crunchbase_url"=>"http://www.crunchbase.com/company/linkedin", "homepage_url"=>"http://linkedin.com", "blog_url"=>"http://blog.linkedin.com", ...}
검색 동작 수정
옵션 메서드를 find
메서드에 연결하여 작업 결과를 수정할 수 있습니다. 다음 표에서는 이러한 옵션 중 일부에 대해 설명합니다.
옵션 | 설명 |
---|---|
| The number of documents to return per batch. The default value is 101 .Type: Integer |
| The collation to use for the operation. The default value is the collation
specified for the collection. Type: Hash |
| The comment to attach to the operation. Type: Object |
| The maximum number of documents the operation can return. Type: Integer |
| The number of documents to skip before returning results. Type: Integer |
| The order in which the operation returns matching documents. Type: Hash |
다음 예시 에서는 find
메서드를 사용하여 number_of_employees
필드 에 1000
값이 있는 모든 문서를 찾습니다. 이 예시 에서는 limit
옵션을 사용하여 최대 2
결과를 반환합니다.
limit_results = collection.find(number_of_employees: 1000).limit(2) limit_results.each do |doc| puts doc end
{"_id"=>BSON::ObjectId('...'), "name"=>"Akamai Technologies", "permalink"=>"akamai-technologies", "crunchbase_url"=>"http://www.crunchbase.com/company/akamai-technologies", "homepage_url"=>"http://www.akamai.com", ...} {"_id"=>BSON::ObjectId('...'), "name"=>"Yodle", "permalink"=>"yodle", "crunchbase_url"=>"http://www.crunchbase.com/company/yodle", "homepage_url"=>"http://www.yodle.com", ...}
전체 옵션 목록은 find 메서드에 대한 API 설명서를 참조하세요.
추가 정보
쿼리 필터에 학습 보려면 쿼리 지정 가이드 를 참조하세요.
Ruby 운전자 사용하여 문서를 조회 코드 예제를 보려면 문서 쿼리를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.