Docs Menu
Docs Home
/ / /
Scala드라이버
/

데이터베이스 명령 실행

이 페이지의 내용

  • 개요
  • 샘플 데이터
  • 명령 실행
  • 읽기 기본 설정 지정
  • 응답
  • 예시
  • 추가 정보
  • API 문서

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

중요

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

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

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

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

이 가이드 sample_restaurants 의 예제에서는 Atlas 샘플 데이터 세트의 데이터베이스 사용합니다. 스칼라 애플리케이션 에서 이 데이터베이스 액세스 하려면 Atlas cluster 에 연결하는 MongoClient 를 만들고 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) => ())

데이터베이스 명령의 전체 목록과 해당 매개변수를 보려면 MongoDB Server 매뉴얼의 데이터베이스 명령을 참조하세요.

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() 메서드를 호출하여 명령을 실행 하고 문서 로 응답 액세스 .

원시 명령 응답 문서 다음 필드가 포함되어 있습니다.

필드
설명

<command result>

데이터베이스 명령 과 관련된 필드입니다. 예를 예시, hello 명령은 topologyVersion 필드 를 반환합니다.

ok

명령이 성공했는지(1.0) 아니면 실패했는지(0.0) 여부를 나타냅니다. ok 값이 0.0인 경우 운전자 MongoCommandException 를 발생시킵니다.

$clusterTime

서명된 클러스터 시간이 포함된 문서 입니다. 클러스터 시간은 작업 순서에 사용되는 논리적 시간입니다. 이 필드 복제본 세트 또는 샤딩된 클러스터 에서 실행 명령에만 적용됩니다.

operationTime

작업 실행의 논리적 시간입니다. 이 필드 복제본 세트 또는 샤딩된 클러스터 에서 실행 명령에만 적용됩니다.

다음 예시 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 설명서를 참조하세요.

돌아가기

데이터베이스 & collection