Docs Home → 애플리케이션 개발 → Python 드라이버 → PyMongo
쿼리 지정
개요
이 가이드에서는 PyMongo를 사용하여 쿼리를 지정하는 방법을 배울 수 있습니다.
쿼리 필터 를 만들어 쿼리가 반환하는 문서 세트를 구체화할 수 있습니다. 쿼리 필터는 MongoDB 가 읽기 또는 쓰기 작업에서 문서를 일치시키는 데 사용하는 Atlas Search 기준을 지정하는 표현식입니다. 쿼리 필터에서는 드라이버가 쿼리와 정확히 일치하는 문서를 Atlas Search에 표시하도록 요청하거나 쿼리 필터를 Express 하여 보다 복잡한 일치 기준을 표현할 수 있습니다.
샘플 데이터
이 가이드의 예제에서는 다음 문서가 포함된 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": "pineapple", "qty": 3, "rating": 5, "color": "yellow" },
다음 코드 예시에서는 데이터베이스와 컬렉션을 만든 다음 컬렉션에 샘플 문서를 삽입하는 방법을 보여 줍니다.
from pymongo import MongoClient uri = "<connection string URI>" client = MongoClient(uri) try: database = client["sample_fruit"] collection = database["fruits"] collection.insert_many([ { "_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": "pineapple", "qty": 3, "rating": 5, "color": "yellow" }, ]) client.close() except Exception as e: raise Exception("Error inserting documents: ", e)
정확히 일치
리터럴 값 쿼리는 쿼리 필터와 정확히 일치하는 문서를 반환합니다.
다음 예에서는 쿼리 필터를 find()
메서드에 대한 매개 변수로 지정합니다. 이 코드는 color
필드 값이 "yellow"
인 모든 문서를 반환합니다.
results = collection.find({ "color": "yellow" })
{'_id': 2, 'name': 'bananas', 'qty': 7, 'rating': 4, 'color': 'yellow', 'type': ['cavendish']} {'_id': 4, 'name': 'pineapple', 'qty': 3, 'rating': 5, 'color': 'yellow'}
팁
모든 문서 찾기
컬렉션의 모든 문서를 찾으려면 find()
메서드를 호출하고 빈 쿼리 필터를 전달합니다. 다음 예에서는 컬렉션의 모든 문서를 찾습니다.
results = collection.find({})
비교 연산자
비교 연산자는 쿼리 필터의 지정된 값을 기준으로 문서 필드 값을 평가합니다. 다음은 일반적인 비교 연산자 목록입니다.
$gt
: 보다 큼$lte
: 보다 작거나 같음$ne
: 같지 않음
비교 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 비교 쿼리 연산자 가이드를 참조하세요.
다음 예제에서는 쿼리 필터의 비교 연산자를 find()
메서드에 대한 매개 변수로 지정합니다. 이 코드는 rating
필드 값이 2
보다 큰 모든 문서를 반환합니다.
results = collection.find({ "rating": { "$gt" : 2 }}) for f in results: print(f)
{'_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': 'pineapple', 'qty': 3, 'rating': 5, 'color': 'yellow'}
로직 연산
논리 연산자는 두 개 이상의 표현식 집합의 결과에 적용된 논리를 사용하여 문서를 일치시킵니다. 다음은 논리 연산자 목록입니다.
$and
모든 절의 조건과 일치하는 모든 문서를 반환합니다.$or
한 절의 조건과 일치하는 모든 문서를 반환합니다.$nor
, 어떤 절의 조건과도 일치 하지 않는 모든 문서를 반환합니다.$not
표현식과 일치 하지 않는 모든 문서를 반환합니다.
논리 연산자에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 논리 쿼리 연산자 가이드를 참조하세요.
다음 예에서는 쿼리 필터의 논리 연산자를 find()
메서드에 대한 매개 변수로 지정합니다. 이 코드는 qty
필드 값이 5
보다 크 거나 color
필드 값이 "yellow"
인 모든 문서를 반환합니다.
results = collection.find({ "$or": [ { "qty": { "$gt": 5 }}, { "color": "yellow" } ] }) for f in results: print(f)
{'_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': 'pineapple', 'qty': 3, 'rating': 5, 'color': 'yellow'}
배열 연산자
배열 연산자는 배열 필드에 있는 요소의 값 또는 수량을 기준으로 문서를 일치시킵니다. 다음은 사용 가능한 배열 연산자 목록입니다.
$all
쿼리의 모든 요소를 포함하는 배열이 있는 문서를 반환합니다.$elemMatch
배열 필드의 요소가 쿼리의 모든 조건과 일치하는 경우 문서를 반환합니다.$size
지정된 크기의 배열이 있는 모든 문서를 반환합니다.
배열 연산자에 대해 자세히 알아보려면 매뉴얼의 배열 쿼리 연산자 가이드를 MongoDB Server 참조하세요.
다음 예제에서는 쿼리 필터의 배열 연산자를 find()
메서드에 대한 매개 변수로 지정합니다. 이 코드는 2
요소를 포함하는 type
배열 필드가 있는 모든 문서를 반환합니다.
results = collection.find({ "type" : { "$size": 2 } }) for f in results: print(f)
{'_id': 1, 'name': 'apples', 'qty': 5, 'rating': 3, 'color': 'red', 'type': ['fuji', 'honeycrisp']} {'_id': 3, 'name': 'oranges', 'qty': 6, 'rating': 2, 'type': ['naval', 'mandarin']}
요소 연산자
요소 연산자는 필드의 존재 여부 또는 유형에 따라 데이터를 쿼리합니다.
요소 연산자에 대해 자세히 알아보려면 매뉴얼의 요소 쿼리 연산자 가이드를 MongoDB Server 참조하세요.
다음 예제에서는 쿼리 필터의 요소 연산자를 find()
메서드에 대한 매개 변수로 지정합니다. 이 코드는 color
필드가 있는 모든 문서를 반환합니다.
results = collection.find( { "color" : { "$exists": "true" }} ) for f in results: print(f)
{'_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': 'pineapple', 'qty': 3, 'rating': 5, 'color': 'yellow'}
평가 연산자
평가 연산자는 개별 필드 또는 전체 컬렉션 문서의 평가를 기반으로 데이터를 반환합니다.
다음은 일반적인 평가 연산자 목록입니다.
$text
문서에 대해 텍스트 Atlas Search를 수행합니다.$regex
지정된 정규 표현식과 일치하는 문서를 반환합니다.$mod
필드 값에 모듈로 연산을 수행하고 나머지가 지정된 값인 문서를 반환합니다.
평가 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 평가 쿼리 연산자 가이드를 참조하세요.
다음 예제에서는 쿼리 필터의 평가 연산자를 find()
메서드에 대한 매개 변수로 지정합니다. 이 코드는 정규 표현식을 사용하여 두 개 이상의 연속된 "p"
문자가 있는 name
필드 값이 있는 모든 문서를 반환합니다.
results = collection.find({ "name" : { "$regex" : "p{2,}" }} ) for f in results: print(f)
{'_id': 1, 'name': 'apples', 'qty': 5, 'rating': 3, 'color': 'red', 'type': ['fuji', 'honeycrisp']} {'_id': 4, 'name': 'pineapple', 'qty': 3, 'rating': 5, 'color': 'yellow'}
추가 정보
문서 쿼리에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 문서 쿼리 가이드를 참조하세요.
PyMongo 로 문서를 검색하는 방법에 학습 보려면 데이터 조회를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.