데이터베이스 명령 실행
개요
이 가이드 에서는 스칼라 운전자 사용하여 데이터베이스 명령 실행 방법을 학습 수 있습니다. 데이터베이스 명령을 사용하여 서버 통계 가져오기, 복제본 세트 초기화 또는 집계 파이프라인 실행 과 같은 다양한 관리 및 진단 작업을 수행할 수 있습니다.
중요
데이터베이스 명령보다 드라이버 메서드를 선호합니다.
운전자 는 많은 데이터베이스 명령에 대한 래퍼 메서드를 제공합니다. 가능하면 데이터베이스 명령을 실행하는 대신 이러한 방법을 사용하는 것이 좋습니다.
관리 작업을 수행하려면 스칼라 운전자 대신 MongoDB Shell 사용합니다. 셸 운전자 에서 사용할 수 없는 헬퍼 메서드를 제공합니다.
운전자 또는 셸 에 사용 가능한 헬퍼가 없는 경우 이 가이드 에 설명된 db.runCommand()
셸 메서드 또는 드라이버의 runCommand()
메서드를 사용할 수 있습니다.
샘플 데이터
이 가이드 의 예제에서는 sample_restaurants
Atlas 샘플 데이터 세트의 데이터베이스 사용합니다. 스칼라 애플리케이션 에서 이 데이터베이스 액세스 하려면 MongoClient
Atlas cluster 에 연결하는 를 만들고 변수에 다음 값을 할당합니다.database
val database: MongoDatabase = mongoClient.getDatabase("sample_restaurants")
무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 Atlas 시작하기 가이드 를 참조하세요.
명령 실행
데이터베이스 명령 실행 하려면 명령을 지정하는 Document
객체 생성하고 이를 runCommand()
메서드에 매개변수로 전달합니다. 이 메서드는 SingleObservable
인스턴스 반환하며, 이 관찰 가능 항목을 구독 명령을 실행하고 명령 결과에 액세스 할 수 있습니다.
다음 예시 데이터베이스 에서 runCommand()
메서드를 호출하여 서버 에 대한 정보를 반환하는 hello
명령을 실행 .
database.runCommand(Document("hello" -> 1)) .subscribe((doc: Document) => ())
읽기 기본 설정 지정
runCommand()
메서드는 MongoDatabase
인스턴스 에 설정하다 했을 수 있는 읽기 설정 (read preference) 을 상속하지 않습니다. 기본값 으로 runCommand()
는 primary
읽기 설정 (read preference) 을 사용합니다.
다음 코드와 같이 ReadPreference
인스턴스 runCommand()
에 매개 변수로 전달하여 명령 실행에 대한 읽기 설정 (read preference) 설정하다 수 있습니다.
database.runCommand(Document("hello" -> 1), ReadPreference.secondary()) .subscribe((doc: Document) => ())
팁
읽기 설정 (read preference) 옵션에 대해 학습 보려면 MongoDB Server 매뉴얼의 읽기 설정 을 참조하세요.
응답
runCommand()
메서드는 지정된 명령에 대한 데이터베이스 의 응답이 포함된 SingleObservable
을 반환합니다. 옵저버블에서 subscribe()
메서드를 호출하여 명령을 실행 하고 문서 로 응답 액세스 .
원시 명령 응답 문서 다음 필드가 포함되어 있습니다.
필드 | 설명 |
---|---|
| 데이터베이스 명령 과 관련된 필드입니다. 예를 예시, |
| 명령이 성공했는지( |
| 서명된 클러스터 시간이 포함된 문서 입니다. 클러스터 시간은 작업 순서에 사용되는 논리적 시간입니다. 이 필드 복제본 세트 또는 샤딩된 클러스터 에서 실행 명령에만 적용됩니다. |
| 작업 실행의 논리적 시간입니다. 이 필드 복제본 세트 또는 샤딩된 클러스터 에서 실행 명령에만 적용됩니다. |
팁
To 학습 more about logical time, see the Wikipedia entry on the logical clock.
예시
다음 예시 dbStats
명령을 실행하여 sample_restaurants
데이터베이스 의 저장 통계를 조회 다음 명령 결과를 출력합니다.
database.runCommand(Document("dbStats" -> 1)) .subscribe((doc: Document) => println(doc.toJson()), (e: Throwable) => println(s"There was an error: $e"))
이 명령의 출력에는 다음 코드에 표시된 대로 데이터베이스 에 저장된 데이터에 대한 정보가 포함됩니다.
{"db": "sample_restaurants", "collections": 4, "views": 0, "objects": 18767, "avgObjSize": 596.1911866574306, "dataSize": 11188720, "storageSize": 7528448, "totalFreeStorageSize": 0, "numExtents": 0, "indexes": 6, "indexSize": 1519616, "indexFreeStorageSize": 0, "fileSize": 0, "nsSizeMB": 0, "ok": 1}
추가 정보
이 가이드 의 개념에 대한 자세한 내용은 MongoDB Server 매뉴얼의 다음 문서를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.