Docs Menu

Docs Home애플리케이션 개발Python 드라이버PyMongo

쿼리 지정

이 페이지의 내용

  • 개요
  • 샘플 데이터
  • 정확히 일치
  • 비교 연산자
  • 로직 연산
  • 배열 연산자
  • 요소 연산자
  • 평가 연산자
  • 추가 정보
  • API 문서

이 가이드에서는 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 설명서를 참조하세요.

← MongoDB에서 데이터 읽기