Retrieve Data
개요
이 가이드에서는 MongoDB 동기식 Python 드라이버인 PyMongo를 사용하여 읽기 작업을 사용하여 MongoDB 컬렉션에서 데이터를 검색하는 방법을 배울 수 있습니다. find()
또는 find_one()
메서드를 호출하여 기준 세트와 일치하는 문서를 검색할 수 있습니다.
샘플 데이터
이 가이드 의 예제에서는 Atlas 샘플 데이터 세트 의 sample_restaurants.restaurants
컬렉션 을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 PyMongo 시작하기를 참조하세요.
문서 찾기
PyMongo에는 컬렉션에서 문서를 검색하는 두 가지 메서드, 즉 find_one()
및 find()
가 포함되어 있습니다. 이러한 메서드는 쿼리 필터 를 사용하여 하나 이상의 일치하는 문서를 반환합니다. 쿼리 필터는 쿼리에서 검색하려는 문서를 지정하는 객체입니다.
쿼리 필터에 대해 자세히 알아보려면 쿼리 지정을 참조하세요.
하나의 문서 찾기
컬렉션에서 단일 문서를 찾으려면 find_one()
메서드를 호출하고 찾으려는 문서의 기준을 지정하는 쿼리 필터를 전달합니다. 쿼리 필터와 일치하는 문서가 두 개 이상인 경우 이 메서드는 검색된 결과에서 첫 번째 로 일치하는 문서를 Python 사전으로 반환합니다. 쿼리 필터와 일치하는 문서가 없는 경우 메서드는 None
을 반환합니다.
팁
find_one()
메서드는 일치하는 문서가 하나만 있거나 첫 번째 일치 항목에만 관심이 있는 경우에 유용합니다.
다음 예제에서는 find_one()
메서드를 사용하여 "cuisine"
필드에 "Bakery"
값이 있는 첫 번째 문서를 찾습니다.
restaurant = sample_restaurants.restaurants.find_one({"cuisine": "Bakery"})
정렬에 학습 보려면 정렬 가이드 를 참조하세요.
여러 문서 찾기
컬렉션에서 여러 문서를 찾으려면 검색하려는 문서의 기준을 지정하는 find()
메서드에 쿼리 필터를 전달합니다.
다음 예제에서는 find()
메서드를 사용하여 "cuisine"
필드에 "Spanish"
값이 있는 모든 문서를 찾습니다.
cursor = sample_restaurants.restaurants.find({"cuisine": "Spanish"})
커서를 사용하여 find()
메서드에서 반환한 문서를 반복할 수 있습니다. 커서는 애플리케이션이 주어진 시간에 데이터베이스 결과의 하위 집합만 메모리에 유지하면서 데이터베이스 결과를 반복할 수 있는 메커니즘입니다. 커서는 find()
메소드가 많은 양의 문서를 반환할 때 유용합니다.
다음 예제와 같이 for-in
루프를 사용하여 커서에 있는 문서를 반복할 수 있습니다.
cursor = sample_restaurants.restaurants.find({"cuisine": "Spanish"}) for restaurant in cursor: ...
참고
모든 문서 찾기
컬렉션의 모든 문서를 찾으려면 find()
메서드에 빈 필터를 전달합니다.
all_restaurants = sample_restaurants.restaurants.find({})
검색 동작 수정
find()
및 find_one()
메서드에 명명된 인수를 전달하여 해당 메서드의 동작을 수정할 수 있습니다. 다음 표에서는 일반적으로 사용되는 인수에 대해 설명합니다.
Argument | 설명 |
---|---|
batch_size | Limits the number of documents to hold in a cursor at a given time. |
collation | An instance of the Collation class that sets the collation options. |
comment | A string to attach to the query. This can help you trace and interpret the
operation in the server logs and in profile data. To learn more about query comments,
see the $comment page. |
hint | The index to use for the query. |
max_time_ms | The maximum execution time on the server for this operation. If this time is
exceeded, PyMongo aborts the operation and raises an ExecutionTimeout . |
다음 예제에서는 find()
메서드를 사용하여 "cuisine"
필드의 값이 "Italian"
이고 최대 실행 시간을 10 초(10,000 밀리초)로 설정한 모든 문서를 찾습니다.
cursor = sample_restaurants.restaurants.find({"cuisine": "Italian"}, max_time_ms=10000)
사용 가능한 인수의 전체 목록은 API 설명서 를 find() method
참조하세요. 의 경우.
추가 정보
쿼리 필터에 대해 자세히 알아보려면 쿼리 지정을 참조하세요.
PyMongo로 문서를 검색하는 실행 가능한 코드 예제는 MongoDB에서 데이터 읽기를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.