Docs Menu
Docs Home
/ / /
Scala
/

데이터베이스 명령 실행

이 페이지의 내용

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

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

중요

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

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

관리 작업을 수행하려면 스칼라 운전자 대신 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) => ())

데이터베이스 명령의 전체 목록과 해당 매개변수를 보려면 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