Docs Menu

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

데이터베이스 및 컬렉션

이 페이지의 내용

  • 개요
  • 데이터베이스에 액세스
  • 컬렉션에 액세스
  • 컬렉션 생성
  • 컬렉션 목록 가져오기
  • 컬렉션 삭제
  • 읽기 및 쓰기 작업 구성
  • 태그 세트
  • LocalThreshold
  • 문제 해결
  • AutoReconnect 오류
  • API 문서

이 가이드에서는 PyMongo와 함께 MongoDB 데이터베이스 및 컬렉션을 사용하는 방법을 배울 수 있습니다.

MongoDB는 데이터를 다음 수준의 계층 구조로 구성합니다.

  • 데이터베이스: MongoDB 인스턴스에서 데이터 구성의 최상위 수준입니다.

  • 컬렉션: MongoDB는 문서를 컬렉션에 저장합니다. 관계형 데이터베이스의 테이블과 유사합니다.

  • 문서: string, 숫자, 날짜 및 기타 내장된 문서와 같은 리터럴 데이터를 포함합니다.

문서 필드 유형 및 구조에 대한 자세한 내용은 MongoDB Server 매뉴얼의 문서 가이드를 참조하세요.

MongoClient 인스턴스에서 사전 스타일의 액세스를 사용하여 데이터베이스에 액세스합니다.

다음 예제에서는 'test_database'라는 데이터베이스에 액세스합니다.

database = client["test_database"]

데이터베이스 인스턴스에서 딕셔너리 스타일의 액세스를 사용하여 컬렉션에 액세스합니다.

다음 예시에서는 'test_collection'이라는 컬렉션에 액세스합니다.

database = client["test_database"]
collection = database["test_collection"]

제공된 컬렉션 이름이 데이터베이스에 아직 존재하지 않는 경우, MongoDB는 데이터를 처음 삽입할 때 컬렉션을 암시적으로 생성합니다.

create_collection() 메서드를 사용하여 MongoDB database 에 컬렉션을 명시적으로 만듭니다.

다음 예에서는 "example_collection" 이라는 collection을 만듭니다.

database = client["test_database"]
database.create_collection("example_collection")

최대 크기 및 문서 유효성 검사 규칙과 같은 컬렉션 옵션을 키워드 인수로 전달하여 지정할 수 있습니다. 선택적 매개변수의 전체 목록은 create_collection() API 문서를 참조하세요.

list_collections() 메서드를 호출하여 데이터베이스의 컬렉션 목록을 쿼리할 수 있습니다. 이 메서드는 데이터베이스의 모든 컬렉션과 관련 메타데이터가 포함된 커서를 반환합니다.

다음 예시에서는 list_collections() 메서드를 호출하고 커서를 반복하여 결과를 인쇄합니다.

collection_list = database.list_collections()
for c in collection_list:
print(c)

데이터베이스에서 컬렉션 이름만 쿼리하려면 다음과 같이 list_collection_name() 메서드를 호출합니다.

collection_list = database.list_collection_names()
for c in collection_list:
print(c)

커서 반복에 대한 자세한 내용은 커서에서 데이터 액세스 항목을 참조하세요.

drop_collection() 메서드를 사용하여 데이터베이스에서 컬렉션을 삭제할 수 있습니다.

다음 예시에서는 test_collection 컬렉션을 삭제합니다.

collection = database["test_collection"];
collection.drop();

경고

컬렉션을 제거하면 컬렉션의 모든 데이터가 삭제됨

데이터베이스에서 컬렉션을 삭제하면 해당 컬렉션 내의 모든 문서와 모든 인덱스가 영구적으로 삭제됩니다.

컬렉션의 데이터가 더 이상 필요하지 않은 경우에만 컬렉션을 삭제하세요.

읽기 설정( read preference)을 설정하여 드라이버가 읽기 작업을 라우팅하는 방법을 제어할 수 있습니다. 또한 읽기 고려 및 쓰기 고려를 설정하여 드라이버가 복제본 세트에 대한 읽기쓰기 작업의 승인을 기다리는 방법에 대한 옵션을 제어할 수도 있습니다.

기본적으로 데이터베이스는 MongoClient 인스턴스에서 이러한 설정을 상속하고 컬렉션은 데이터베이스에서 설정을 상속합니다. 그러나 다음 방법 중 하나를 사용하여 데이터베이스 또는 컬렉션에서 이러한 설정을 변경할 수 있습니다.

  • get_database(): 데이터베이스를 가져오고 클라이언트의 읽기 설정, 읽기 고려 및 쓰기 설정을 적용합니다.

  • database.with_options(): 데이터베이스를 가져오고 현재 읽기 설정, 읽기 고려 및 쓰기 설정을 적용합니다.

  • get_collection(): 컬렉션을 가져오고 현재 읽기 설정, 읽기 고려 및 쓰기 설정을 적용합니다.

  • collection.with_options(): 컬렉션을 가져오고 데이터베이스의 읽기 설정, 읽기 고려 및 쓰기 설정을 적용합니다.

앞의 메서드를 사용하여 읽기 또는 쓰기 설정을 변경하려면 메서드를 호출하고 컬렉션 또는 데이터베이스 이름과 새 읽기 설정, 읽기 고려 또는 쓰기 설정을 전달합니다.

다음 예에서는 get_database() 메서드를 사용하여 test-database 데이터베이스의 읽기 설정, 읽기 고려 및 쓰기 설정을 변경하는 방법을 보여 줍니다.

client.get_database("test-database",
read_preference=ReadPreference.SECONDARY,
read_concern="local",
write_concern="majority")

다음 예에서는 get_collection() 메서드를 사용하여 test-collection 컬렉션의 읽기 및 쓰기 설정을 변경하는 방법을 보여 줍니다.

database.get_collection("test-collection",
read_preference=ReadPreference.SECONDARY,
read_concern="local",
write_concern="majority")

다음 예에서는 with_options() 메서드를 사용하여 test-collection 컬렉션의 읽기 및 쓰기 설정을 변경하는 방법을 보여 줍니다.

collection.with_options(read_preference=ReadPreference.SECONDARY,
read_concern="local",
write_concern="majority")

열거형에서 사용할 수 있는 읽기 설정 유형을 ReadPreference 확인하려면 API 설명서를 참조하세요.

읽기 및 쓰기 설정에 대해 자세히 알아보려면 MongoDB Server 매뉴얼에서 다음 가이드를 참조하세요.

MongoDB Server에서는 선택한 기준에 따라 복제본 세트 멤버에 키-값 태그 를 적용할 수 있습니다. 그런 다음 해당 태그를 사용하여 읽기 작업의 멤버를 한 명 이상 대상으로 지정할 수 있습니다.

기본적으로 PyMongo는 읽을 멤버를 선택할 때 태그를 무시합니다. PyMongo가 특정 태그를 선호하도록 지시하려면 해당 태그를 읽기 설정 클래스 에 매개변수로 전달하세요. 생성자.

다음 코드 예제에서 read_preference 매개변수에 전달된 태그 세트는 PyMongo가 뉴욕 데이터 센터('dc': 'ny')에서 읽기를 선호하고 샌프란시스코 데이터 센터('dc': 'sf')로 대체하도록 지시합니다.

db = client.get_database(
'test', read_preference=Secondary([{'dc': 'ny'}, {'dc': 'sf'}]))

여러 복제본 세트 멤버가 지정한 읽기 설정 및 태그 세트와 일치하는 경우, PyMongo는 핑 시간에 따라 선택된 가장 가까운 복제본 세트 멤버에서 읽습니다.

기본적으로 드라이버는 핑 시간이 가장 가까운 멤버의 15 밀리초 이내인 멤버만 쿼리에 사용합니다. 지연 시간이 더 긴 멤버 간에 읽기를 분산하려면 localThresholdMS 옵션을 MongoClient() 생성자에 전달합니다.

다음 예에서는 로컬 임계값을 35 밀리초로 지정합니다.

client = MongoClient(replicaSet='repl0',
readPreference=ReadPreference.SECONDARY_PREFERRED,
localThresholdMS=35)

앞의 예제에서 PyMongo는 가장 가까운 멤버의 핑 시간 35 밀리초 내에 일치하는 멤버 간에 읽기를 분산합니다.

참고

PyMongo는 mongos 인스턴스를 통해 복제본 세트와 통신할 때 localThresholdMS 값을 무시합니다. 이 경우 localThreshold 명령줄 옵션을 사용합니다.

읽기 설정에 tag-sets 을(를) 지정하고 MongoDB가 지정된 태그를 가진 복제본 세트 멤버를 찾을 수 없는 경우 이 오류가 발생합니다. 이 오류를 방지하려면 태그 세트 목록 끝에 빈 사전({})을 포함하세요. 이는 일치하는 태그를 찾을 수 없는 경우 읽기 참조 모드와 일치하는 모든 멤버에서 읽도록 PyMongo에 지시합니다.

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

← MongoDB Server 실행 시간 제한