Docs Menu
Docs Home
/ / /
PyMongo

데이터베이스 명령 실행

이 페이지의 내용

  • 개요
  • 명령 실행
  • 명령 커서
  • 명령 예제
  • 추가 정보
  • API 문서

이 가이드 에서는 PyMongo 를 사용하여 데이터베이스 명령 을 실행 하는 방법을 학습 수 있습니다. 데이터베이스 명령을 사용하여 서버 통계 가져오기, 복제본 세트 초기화 또는 집계 파이프라인 실행 과 같은 다양한 관리 및 진단 작업을 수행할 수 있습니다.

중요

데이터베이스 명령보다 라이브러리 메서드를 선호합니다.

라이브러리는 많은 데이터베이스 명령에 대한 래퍼 메서드를 제공합니다. 가능하면 데이터베이스 명령을 실행하는 대신 이러한 방법을 사용하는 것이 좋습니다.

관리 작업을 수행하려면 PyMongo 대신MongoDB Shell 을 사용합니다. 셸 은 shell 운전자 에서 사용할 수 없는 헬퍼 메서드를 제공합니다.

라이브러리나 셸 에 사용 가능한 헬퍼가 없는 shell 경우 이 db.runCommand() shell 가이드 command() 에 설명된 셸 메서드 또는 드라이버의 메서드를 사용할 수 있습니다.

command() 메서드를 사용하여 데이터베이스 명령 을 실행 수 있습니다. 명령과 관련 인수를 지정해야 합니다. 명령이 간단한 경우 문자열로 전달할 수 있습니다. 그렇지 않으면 dict 객체 로 전달될 수 있습니다. 이 메서드는 실행 된 명령의 결과를 반환합니다.

다음 코드는 Database 에서 command() 메서드를 사용하여 서버 에 대한 정보를 반환하는 hello 명령을 실행 하는 방법을 보여줍니다.

database = client.get_database("my_db")
hello = database.command("hello")
print(hello)
{
'topologyVersion': {
'processId': ObjectId('6724d211d6b98fa1931e8616'),
'counter': 6
},
'hosts': ['cluster0-shard-00-00.fxoii.mongodb.net:27017',
'cluster0-shard-00-01.fxoii.mongodb.net:27017',
'cluster0-shard-00-02.fxoii.mongodb.net:27017'],
'setName': 'atlas-13l6uw-shard-0',
'setVersion': 114,
'isWritablePrimary': True,
'secondary': False,
'primary': 'cluster0-shard-00-02.fxoii.mongodb.net:27017',
'tags': {
'workloadType': 'OPERATIONAL',
'diskState': 'READY',
'region': 'US_EAST_1',
'provider': 'AWS',
'nodeType': 'ELECTABLE',
'availabilityZone': 'use1-az5'
},
'me': 'cluster0-shard-00-02.fxoii.mongodb.net:27017',
'electionId': ObjectId('7fffffff00000000000000e3'),
'lastWrite': {
'opTime': {
'ts': Timestamp(1730486145, 22),
't': 227
},
'lastWriteDate': datetime.datetime(2024, 11, 1, 18, 35, 45),
'majorityOpTime': {
'ts': Timestamp(1730486145, 22),
't': 227
},
'majorityWriteDate': datetime.datetime(2024, 11, 1, 18, 35, 45)
},
'maxBsonObjectSize': 16777216,
'maxMessageSizeBytes': 48000000,
'maxWriteBatchSize': 100000,
'localTime': datetime.datetime(2024, 11, 1, 18, 35, 45, 309000),
'logicalSessionTimeoutMinutes': 30,
'connectionId': 23889,
'minWireVersion': 0,
'maxWireVersion': 21,
'readOnly': False,
'ok': 1.0,
'$clusterTime': {
'clusterTime': Timestamp(1730486145, 22),
'signature': {
'hash': b"\x1a\xf7{>q%F\xc2\x89\x15\x13W29\x91\xaae'~\xe4",
'keyId': 7379292132843978793
}
},
'operationTime': Timestamp(1730486145, 22)
}

데이터베이스 명령 및 해당 매개변수의 전체 목록은 추가 정보 섹션을 참조하십시오.

command() 메서드는 실행 된 명령의 결과를 반환합니다. MongoDB 명령을 실행하고 응답을 CommandCursor 로 구문 분석하는 메서드를 사용할 수도 있습니다.cursor_command() CommandCursor 를 사용하여 명령 결과를 반복할 수 있습니다.

다음 예시 에서는 sample_mflix 데이터베이스 에서 cursor_command() 메서드를 사용합니다. movies 컬렉션 에서 find 명령을 실행하여 runtime 필드 의 값이 11인 문서를 기준으로 필터하다 합니다.

database = client.get_database("sample_mflix")
result = database.cursor_command("find", "movies", filter={"runtime": 11})
print(result.to_list())
{
'_id': ObjectId('573a1390f29313caabcd42e8'),
'runtime': 11,
'title': 'The Great Train Robbery',
...
},
{
{'_id': ObjectId('573a1394f29313caabce0f10'),
'runtime': 11,
'title': 'Glas',
...
},
...

명령의 응답 형식에 학습 보려면 데이터베이스 명령을 참조하세요.

참고

읽기 설정

command()cursor_command() 메서드가 코드의 다른 곳에서 Database 인스턴스 에 설정하다 한 읽기 설정 (read preference) 을 따르지 않습니다. 매개 변수를 사용하여 ClientSession이 session 제공되고 이 세션이 트랜잭션 에 있는 경우 명령의 읽기 설정 (read preference) 은 트랜잭션의 읽기 설정 (read preference) 으로 설정하다 됩니다. 그렇지 않으면 명령의 읽기 설정 (read preference) 기본값은 PRIMARY 입니다.

다음 코드와 같이 read_preference 매개변수를 사용하여 명령 실행에 대한 읽기 설정 (read preference) 설정하다 지정할 수 있습니다.

from pymongo.read_preferences import Secondary
database = client.get_database("my_db")
hello = database.command("hello", read_preference=Secondary())
print(hello)

API문서에서 모듈에 read_preferences 자세히 보기 .

읽기 설정 (read preference) 옵션에 대해 학습 보려면 MongoDB Server 매뉴얼의 읽기 설정 을 참조하세요.

다음 예시 에서는 command() 메서드를 사용하여 dbStats 명령을 실행 하여 sample_mflix 데이터베이스 의 저장 통계를 조회 합니다.

database = client.get_database("sample_mflix")
result = database.command("dbStats")
print(result)
{'db': 'sample_mflix', 'collections': 9, 'views': 1, 'objects': 67662,
'avgObjSize': 1796.788182436227, 'dataSize': 121574282, 'storageSize': 97779712,
'totalFreeStorageSize': 0, 'numExtents': 0, 'indexes': 13, 'indexSize': 19423232,
'indexFreeStorageSize': 0, 'fileSize': 0, 'nsSizeMB': 0, 'ok': 1}

이 명령의 출력에는 데이터베이스 의 컬렉션에 대한 정보가 포함되며 컬렉션 전체에 저장된 데이터의 양과 크기가 설명됩니다.

이 가이드 의 개념에 대한 자세한 내용은 MongoDB Server 매뉴얼의 다음 문서를 참조하세요.

command()cursor_command() 메서드에 대한 자세한 내용은 다음 PyMongo API 문서를 참조하세요.

돌아가기

데이터 변경 사항 모니터링