명령 실행
개요
이 가이드에서는 Node.js 드라이버로 데이터베이스 명령어를 실행하는 방법을 배울 수 있습니다. 데이터베이스 명령을 사용하여 서버 통계 가져오기, 복제본 세트 초기화 또는 집계 파이프라인 실행과 같은 다양한 관리 및 진단 작업을 수행할 수 있습니다.
중요
데이터베이스 명령보다 드라이버 메서드를 선호합니다.
드라이버는 많은 데이터베이스 명령에 대한 래퍼 메서드를 제공합니다. 가능하면 데이터베이스 명령을 실행하는 대신 드라이버 메서드를 사용하는 것이 좋습니다.
관리 작업을 수행하려면 Node.js 드라이버 대신 MongoDB Shell 을 사용합니다. shell 내에서 db.runCommand()
메서드를 호출하는 것은 shell 과 드라이버 간에 일관된 인터페이스를 제공하므로 데이터베이스 명령을 실행하는 데 선호되는 메서드입니다.
명령 실행
데이터베이스 명령을 실행하려면 문서에 명령 및 관련 매개변수를 지정한 다음 이 문서를 명령 실행 메서드에 전달해야 합니다. Node.js 드라이버는 데이터베이스 명령을 실행하기 위해 다음과 같은 방법을 제공합니다.
command()
Document
유형으로 명령 응답을 반환합니다. 이 방법은 모든 데이터베이스 명령과 함께 사용할 수 있습니다.runCursorCommand()
, 명령 응답을 반복 가능한RunCommandCursor
유형으로 반환합니다. 데이터베이스 명령이 여러 결과 문서를 반환하는 경우에만 이 메서드를 사용할 수 있습니다.
다음 코드는 command()
메서드를 사용하여 데이터베이스에서 복제본 세트의 현재 멤버의 역할에 대한 정보를 반환하는 hello
명령을 실행하는 방법을 보여 줍니다.
const result = await myDB.command({ hello: 1 });
데이터베이스 명령 및 해당 매개변수의 전체 목록은 추가 정보 섹션을 참조하십시오.
명령 옵션
command()
및 runCursorCommand()
메서드에 대한 선택적 명령 동작을 지정할 수 있습니다.
command()
메서드는 RunCommandOptions
객체 를 허용합니다. RunCommandOptions
유형에 학습 보려면 API 설명서를 참조하세요.
runCursorCommand() method
은(는) RunCursorCommandOptions
객체를 허용합니다. 유형에 대해 자세히 알아보려면 API RunCursorCommandOptions
설명서를 참조하세요.
Node.js 드라이버 버전 6.0부터 command()
메서드에 다음 옵션만 전달할 수 있습니다.
comment
enableUtf8Validation
raw
readPreference
session
command()
메서드에 전달하는 문서에서 더 많은 옵션을 설정할 수 있습니다. 명령 및 해당 명령이 허용하는 옵션에 대해 자세히 알아보려면 명령을 찾아 MongoDB Server 매뉴얼의 데이터베이스 명령 섹션에 있는 링크를 클릭하세요.
다음 코드는 majority
쓰기 고려 (write concern)로 실행되는 grantRolesToUser
명령을 지정하는 방법을 보여줍니다.
const commandDoc = { grantRolesToUser: "user011", roles: [ "readWrite" ], writeConcern: { w: "majority" } }; const result = await myDB.command(commandDoc);
참고
읽기 설정
command()
및 runCursorCommand()
메서드는 Db
객체에 설정했을 수 있는 읽기 설정을 무시합니다. 기본적으로 이러한 메서드는 primary
읽기 설정을 사용합니다.
다음 코드는 읽기 설정 (read preference)을 지정하고 이를 command()
메서드에 옵션으로 전달하는 방법을 보여줍니다.
const commandOptions = { readPreference: "nearest" }; const result = await myDB.command(commandDoc, commandOptions);
읽기 설정 옵션에 대한 자세한 내용은 MongoDB Server 매뉴얼의 읽기 설정 을 참조하세요.
응답
각 메서드는 명령이 실행된 후 Document
객체 또는 데이터베이스의 응답이 포함된 커서를 반환합니다. 각 데이터베이스 명령은 다른 기능을 수행하므로 응답 내용은 명령에 따라 다를 수 있습니다. 그러나 모든 응답에는 다음 필드가 있는 문서가 포함되어 있습니다.
필드 | 설명 |
---|---|
<command result> | 데이터베이스 명령과 관련된 필드를 제공합니다. 예를 들어 |
| 명령에 성공했는지( |
| 작업의 논리적 시간을 나타냅니다. MongoDB 는 논리적 시간을 사용하여 작업의 순서를 지정합니다. 논리적 시간에 학습 보려면 글로벌 논리적 시계에 대한 블로그 포스트 을 참조하세요. |
| 서명된 cluster 시간을 반환하는 문서를 제공합니다. cluster 시간은 작업 순서를 지정하는 데 사용되는 논리적 시간입니다. 이 문서에는 다음 필드가 포함되어 있습니다:
|
예시
다음 코드는 runCursorCommand()
메서드를 사용하여 testDB
데이터베이스에서 checkMetadataConsistency
명령을 실행하고 결과를 반복하는 방법을 보여줍니다.
// Connect to the "testDB" database const db = client.db("testDB"); // Run a cursor command to check metadata consistency within the database const cursor = await db.runCursorCommand({ checkMetadataConsistency: 1, }); // Iterate through the cursor's results and print the contents for await (const doc of cursor) { console.log(doc); }
출력
출력에는 커서 객체의 내용이 포함됩니다. 이 문서에서는 데이터베이스의 메타데이터 불일치에 대해 설명합니다.
{ type: ..., description: ..., details: { namespace: ..., info: ... } } { type: ..., description: ..., details: { namespace: ..., collectionUUID: ..., maxKeyObj: ..., ... } }
참고
명령 응답을 커서에 저장하면 커서의 내용에 액세스할 때 명령 결과 문서만 표시됩니다. ok
, operationTime
및 $clusterTime
필드가 표시되지 않습니다.
추가 정보
이 가이드의 개념에 대한 자세한 내용은 다음 문서를 참조하세요.
커서 에서 데이터를 조회 하는 방법을 학습 보려면 커서에서 데이터 액세스 기본 사항 페이지를 참조하세요.