Docs Menu

명령 실행

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

중요

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

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

관리 작업을 수행하려면 C++ 운전자 대신 MongoDBShell 사용합니다. 셸 내에서 db.runCommand() 메서드를 호출하는 것은 셸 과 드라이버 간에 일관적인 인터페이스를 제공하므로 데이터베이스 명령을 실행하는 데 선호되는 메서드입니다.

데이터베이스 명령 실행 하려면 mongocxx::database 인스턴스 에서 run_command() 실행 메서드를 호출하고 명령 및 관련 인수를 지정하는 문서 를 전달합니다. 이 메서드는 명령의 결과를 bsoncxx::document::value 객체 로 반환합니다.

모든 데이터베이스 명령 에 run_command() 메서드를 사용할 수 있습니다. 데이터베이스 명령 및 해당 매개변수의 전체 목록은 MongoDB Server 매뉴얼의 데이터베이스 명령을 참조하세요.

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

auto db = client["my_database"];
auto command = make_document(kvp("hello" , 1));
auto result = db.run_command(command.view());
std::cout << bsoncxx::to_json(result) << std::endl;
{
"topologyVersion" : {
"processId" : ...,
"counter" : ...
},
"hosts" : [ ... ],
"setName" : ...,
"setVersion" : ...,
"isWritablePrimary" : ...,
"secondary" : ...,
"primary" : ...,
"tags" : {
"region" : ...,
"availabilityZone" : ...,
"provider" : ...,
"workloadType" : ...,
"nodeType" : ...,
"diskState" : ...
},
"me" : ...,
"electionId" : ...,
"lastWrite" : ...,
"lastWriteDate" : ...,
"majorityOpTime" : ...,
"majorityWriteDate" : ...,
"maxBsonObjectSize" : ...,
"maxMessageSizeBytes" : ...,
"maxWriteBatchSize" : ...,
"localTime" : ...,
"logicalSessionTimeoutMinutes" : ...,
"connectionId" : ...,
"minWireVersion" : ...,
"maxWireVersion" : ...,
"readOnly" : ...,
"ok" : ...,
"$clusterTime" : ...,
"signature" : ...
}

명령 실행 동작을 사용자 지정하려면 run_command() 메서드에 전달하는 명령 문서 에서 옵션을 설정하다 수 있습니다. 명령과 해당 명령이 허용하는 옵션에 대해 자세히 학습 명령을 찾아 MongoDB Server 매뉴얼의 데이터베이스 명령 페이지에서 해당 링크를 클릭하세요.

예시 를 들어 명령 문서 에서 showPrivileges 옵션을 true 로 설정하여 현재 인증된 사용자가 소유한 전체 권한 설정하다 반환하도록 connectionStatus 명령에 지시할 수 있습니다.

auto db = client["my_database"];
auto command = make_document(kvp("connectionStatus" , 1), kvp("showPrivileges", true));
auto result = db.run_command(command.view());
std::cout << bsoncxx::to_json(result) << std::endl;
{
"authInfo" : { "authenticatedUsers" : [ { "user" : ..., "db" : ... } ],
"authenticatedUserRoles" : [ { "role" : ..., "db" : ... } ],
"authenticatedUserPrivileges" : [
{ "resource" : { "db" : "", "collection" : "" }, "actions" : [ ... ] },
{ "resource" : { "db" : "config", "collection" : "system.sessions" }, "actions" : [ ... ] },
...,
{ "resource" : { "db" : "", "collection" : "" }, "actions" : [ ... ] }
]
},
"ok" : 1
}

run_command() 메서드는 명령이 실행된 후 데이터베이스 의 응답이 포함된 bsoncxx::document::value 객체 반환합니다. 각 데이터베이스 명령 서로 다른 기능을 수행하므로 응답 내용은 명령에 따라 다를 수 있습니다. 그러나 모든 응답에는 다음 필드가 있는 문서가 포함되어 있습니다.

필드
설명

<command result>

데이터베이스 명령과 관련된 필드를 제공합니다. 예를 들어 countn 필드를 반환하고 explainqueryPlanner 필드를 반환합니다.

ok

명령에 성공했는지(1) 또는 실패했는지(0) 여부를 나타냅니다.

operationTime

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

$clusterTime

서명된 cluster 시간을 반환하는 문서를 제공합니다. cluster 시간은 작업 순서를 지정하는 데 사용되는 논리적 시간입니다.

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

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

  • signature은(는) 클러스터 시간의 해시와 클러스터 시간을 서명하는 데 사용된 키의 ID를 포함하는 문서입니다.

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

이 가이드에 설명된 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.