문서 메뉴
문서 홈
/ / /
Rust 드라이버
/

명령 실행

이 페이지의 내용

  • 개요
  • 명령 실행
  • 응답
  • 명령 예제
  • 출력
  • 추가 정보
  • API 문서

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

이 가이드에는 다음 섹션이 포함되어 있습니다.

  • 명령 실행run_command()run_cursor_command() 메서드의 구문과 동작을 설명합니다.

  • 응답 은 명령 실행 메서드가 반환하는 정보를 설명합니다.

  • 명령 예제 는 명령 예제를 제공하고 명령의 출력을 설명합니다.

  • 추가 정보에서 이 가이드에 언급된 유형 및 메소드에 대한 리소스 및 API 문서 링크를 찾을 수 있습니다.

중요

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

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

관리 작업을 수행하려면 Rust 드라이버 대신 MongoDB Shell 을 사용하세요. shell 내에서 db.runCommand() 메서드를 호출하는 것은 shell 과 드라이버 간에 일관된 인터페이스를 제공하므로 데이터베이스 명령을 실행하는 데 선호되는 방법입니다.

데이터베이스 명령을 실행하려면 명령 문서에 명령 및 관련 매개변수를 지정한 다음 명령 문서를 명령 실행 메서드에 전달해야 합니다. Rust 드라이버는 데이터베이스 명령을 실행하기 위해 다음과 같은 방법을 제공합니다:

  • run_command()Document 유형으로 명령 응답을 반환합니다. 이 방법은 모든 데이터베이스 명령과 함께 사용할 수 있습니다.

  • run_cursor_command(), 명령 응답을 반복 가능한 Cursor 유형으로 반환합니다. 데이터베이스 명령이 여러 결과 문서를 반환하는 경우에만 이 메서드를 사용할 수 있습니다.

다음 코드는 run_command() 메서드를 사용하여 데이터베이스에서 복제본 세트의 현재 멤버의 역할에 대한 정보를 반환하는 hello 명령을 실행하는 방법을 보여 줍니다.

let result = my_db.run_command(doc! { "hello": 1 }).await?;

checkMetadataConsistency 명령은 여러 개의 결과 문서를 반환합니다. 다음 코드와 같이 run_cursor_command() 메서드를 사용하여 이 명령을 실행하고 결과를 수집할 수 있습니다.

let cursor = my_db
.run_cursor_command(doc! { "checkMetadataConsistency": 1 })
.await?;

데이터베이스 명령 및 해당 매개변수의 전체 목록에 대한 링크를 찾으려면 추가 정보 섹션을 참조하세요.

참고

읽기 설정

run_command()run_cursor_command() 메서드가 코드의 다른 곳에서 Database 객체에 설정했을 수 있는 읽기 설정 (read preference)을 따르지 않습니다. 기본적으로 primary 읽기 설정 (read preference)을 사용합니다.

selection_criteria() 메서드를 run_command() 또는 run_cursor_command() 에 연결하여 명령 실행에 대한 읽기 설정을 지정할 수 있습니다. 다음 코드는 SelectionCriteria 인스턴스에서 읽기 설정을 지정하고 이를 selection_criteria() 메서드에 매개변수로 전달하는 방법을 보여줍니다.

let result = my_db
.run_command(doc! { "hello": 1 })
.selection_criteria(SelectionCriteria::ReadPreference(ReadPreference::Primary))
.await?;

run_cursor_command() 메서드에 대한 읽기 설정을 설정하려면 이전 예시와 동일한 구문을 사용합니다.

읽기 설정 옵션에 대한 자세한 내용은 MongoDB Server 매뉴얼의 읽기 설정 을 참조하세요.

run_command() 메서드는 명령이 실행된 후 데이터베이스의 응답이 포함된 Document 객체를 반환합니다. run_cursor_command() 는 여러 결과 문서를 참고하는 Cursor 을 반환합니다.

각 데이터베이스 명령은 다른 기능을 수행하므로 응답 내용은 실행된 명령에 따라 달라질 수 있습니다. 그러나 모든 응답에는 다음 필드가 있는 문서가 포함되어 있습니다.

필드
설명
<command result>
데이터베이스 명령과 관련된 필드입니다. 예를 들어 countn 필드를 반환하고 explainqueryPlanner 필드를 반환합니다.
ok
명령이 성공했는지(1) 또는 실패했는지(0) 여부입니다.
operationTime

작업의 논리적 시간입니다. MongoDB는 논리적 시간을 사용하여 작업의 순서를 지정합니다.

다음도 참조하세요.

논리적 시간에 대해 자세히 알아보려면 글로벌 논리적 시계에 대한 블로그 게시물을 참조하세요.

$clusterTime

서명된 cluster 시간이 포함된 문서입니다. cluster 시간은 작업 순서를 지정하는 데 사용되는 논리적 시간입니다.

이 문서에는 다음 필드가 포함되어 있습니다.

  • clusterTime, 멤버에 대해 알려진 가장 높은 cluster 시간의 타임스탬프

  • signature- 클러스터 시간의 해시와 클러스터 시간 서명에 사용된 키의 ID가 포함된 문서

다음 코드는 run_command() explain 메서드를 count 사용하여 flowers plants 데이터베이스의 collection 작업에 대한 명령을 실행하는 방법을 보여줍니다. explain 명령은 "queryPlanner" 상세도 모드에서 실행됩니다.

let my_db = client.database("plants");
let count_command = doc! { "count": "flowers" };
let explain_command =
doc! {
"explain": count_command,
"verbosity": "queryPlanner"
};
let result = my_db.run_command(explain_command).await?;

출력에는 쿼리 옵티마이저에서 선택한 계획인 우선 계획 및 거부된 계획 등 count 작업의 실행을 설명하는 필드가 포함됩니다. 출력에는 explain 명령 실행에 대한 정보도 포함됩니다.

{
"$clusterTime": {
"clusterTime": {
"T": 1673969525,
"I": 24
},
"signature": {...}
},
"command": {
"$db": "plants",
"count": "flowers"
},
"explainVersion": "1",
"ok": 1,
"operationTime": {
"T": 1673969525,
"I": 24
},
"queryPlanner": {
"indexFilterSet": false,
"maxIndexedAndSolutionsReached": false,
"maxIndexedOrSolutionsReached": false,
"maxScansToExplodeReached": false,
"namespace": "plants.flowers",
"rejectedPlans": [],
"winningPlan": {
"stage": "RECORD_STORE_FAST_COUNT"
}
},
"serverInfo": {...},
"serverParameters": {
"internalDocumentSourceGroupMaxMemoryBytes": 104857600,
...
}
}

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

돌아가기

추적 & 로깅

다음

성능 고려 사항