Docs Menu
Docs Home
/ / /
PyMongo 드라이버
/ /

문서 찾기

이 가이드에서는 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"인 첫 번째 문서 찾습니다. Synchronous 또는 Asynchronous 탭 선택하여 해당 코드를 확인합니다.

restaurant = sample_restaurants.restaurants.find_one({"cuisine": "Bakery"})
restaurant = await sample_restaurants.restaurants.find_one({"cuisine": "Bakery"})

정렬 순서

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

정렬에 학습 보려면 정렬 가이드 를 참조하세요.

컬렉션에서 여러 문서를 찾으려면 검색하려는 문서의 기준을 지정하는 find() 메서드에 쿼리 필터를 전달합니다.

다음 예시 find() 메서드를 사용하여 "cuisine" 필드 에 "Spanish" 값이 있는 모든 문서를 찾습니다.

cursor = sample_restaurants.restaurants.find({"cuisine": "Spanish"})

커서를 사용하여 find() 메서드에서 반환한 문서를 반복할 수 있습니다. 커서는 애플리케이션이 주어진 시간에 데이터베이스 결과의 하위 집합만 메모리에 유지하면서 데이터베이스 결과를 반복할 수 있는 메커니즘입니다. 커서는 find() 메소드가 많은 양의 문서를 반환할 때 유용합니다.

다음 예시 와 같이 for-in 루프를 사용하여 커서 에 있는 문서를 반복할 수 있습니다. Synchronous 또는 Asynchronous 탭 선택하여 해당 코드를 확인합니다.

cursor = sample_restaurants.restaurants.find({"cuisine": "Spanish"})
for restaurant in cursor:
...
cursor = sample_restaurants.restaurants.find({"cuisine": "Spanish"})
async 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

The collation options for the find operation. See the Collation guide for more information.

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 cursor.comment() page in the MongoDB Server manual.

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 참조하세요.

쿼리 수행할 때 결과를 정렬할 때 운전자가 따를 데이터 정렬 을 지정할 수 있습니다.

데이터 정렬은 대소문자 및 악센트 표시와 같이 문자열 비교를 위한 언어별 규칙 설정하다 입니다.

데이터 정렬을 지정하려면 Collation 클래스 또는 Python 사전의 인스턴스 만듭니다. Collation 생성자에 전달하거나 사전에 키로 포함할 수 있는 옵션 목록은 MongoDB Server 매뉴얼의 데이터 정렬 을 참조하세요.

데이터 정렬 가져오기

Collation 클래스의 인스턴스 만들려면 pymongo.collation에서 가져와야 합니다.

다음 예시 이전 예시 와 동일한 찾기 작업을 수행하지만 기본값 데이터 정렬은 fr_CA입니다.

cursor = sample_restaurants.restaurants.find({"cuisine": "Italian"}, max_time_ms=10000,
collation=Collation(locale="fr_CA"))

또는 collation() 메서드를 find() 메서드에 연결하여 데이터 정렬을 지정할 수 있습니다.

cursor = sample_restaurants.restaurants.find({"cuisine": "Italian"}, max_time_ms=10000)
.collation(Collation(locale="fr_CA")

참고

작업 데이터 정렬 재정의 기본값

작업의 일부로 데이터 정렬을 지정하면 컬렉션 의 기본값 데이터 정렬이 재정의됩니다.

PyMongoArrow 라이브러리를 사용하면 MongoDB 쿼리 결과 세트를 Pandas DataFrames, NumPy ndarrays 또는 Apache Arrow Tables로 로드할 수 있습니다. PyMongoArrow에 대해 자세히 학습 PyMongoArrow 설명서를 참조하세요.

쿼리 필터에 대해 자세히 알아보려면 쿼리 지정을 참조하세요.

PyMongo 로 문서를 검색하는 실행 가능한 코드 예제는 쿼리를 참조하세요.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

쿼리 지정

이 페이지의 내용