Docs Menu
Docs Home
/ / /
루비 드라이버
/ /

문서 찾기

이 가이드 에서는 Ruby 운전자를 사용하여 읽기 작업을 통해 MongoDB 컬렉션 에서 데이터를 조회 방법을 학습 수 있습니다. 컬렉션 에서 find 메서드를 호출하여 기준의 설정하다 과 일치하는 문서를 조회 할 수 있습니다.

이 가이드 의 예제에서는 Atlas 샘플 데이터 세트sample_training 데이터베이스 에 있는 companies 컬렉션 사용합니다. Ruby 애플리케이션 에서 이 컬렉션 에 액세스 하려면 Atlas cluster 에 연결하는 Mongo::Client 객체 만들고 databasecollection 변수에 다음 값을 할당합니다.

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",
...}

정렬 순서

정렬 기준이 지정되지 않은 경우 first 메서드는 디스크에 기본 순서에 따라 첫 번째 문서를 반환합니다.

옵션 메서드를 find 메서드에 연결하여 작업 결과를 수정할 수 있습니다. 다음 표에서는 이러한 옵션 중 일부에 대해 설명합니다.

옵션
설명

batch_size

The number of documents to return per batch. The default value is 101.
Type: Integer

collation

The collation to use for the operation. The default value is the collation specified for the collection.
Type: Hash

comment

The comment to attach to the operation.
Type: Object

limit

The maximum number of documents the operation can return.
Type: Integer

skip

The number of documents to skip before returning results.
Type: Integer

sort

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 설명서를 참조하세요.

돌아가기

쿼리 지정

이 페이지의 내용