Docs Menu

데이터베이스 명령 실행

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

중요

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

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

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

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

이 가이드 의 예제에서는 Atlas 샘플 데이터 세트sample_restaurants.restaurants 컬렉션 을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 빠른 시작을 참조하세요.

데이터베이스 명령 실행 하려면 명령을 지정하는 BsonDocument 객체 만들고 이를 RunCommand() 또는 RunCommandAsync() 메서드에 매개 변수로 전달합니다. type 매개변수를 지정하여 이러한 메서드에서 반환되는 유형을 지정할 수 있습니다. BsonDocument 유형을 사용하여 명령 응답을 반환하거나 강력한 유형의 자체 클래스를 지정하여 명령 응답을 역직렬화할 수 있습니다.

다음 예시 데이터베이스 에서 hello 명령을 실행하여 서버 에 대한 정보를 반환합니다. Asynchronous 또는 Synchronous 탭 선택하여 해당 코드를 확인합니다.

var command = new BsonDocument("hello", 1);
var result = await database.RunCommandAsync<BsonDocument>(command);
var command = new BsonDocument("hello", 1);
var result = database.RunCommand<BsonDocument>(command);

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

RunCommand() 메서드는 MongoDatabase 인스턴스 에 설정하다 했을 수 있는 읽기 설정 (read preference) 상속하지 않습니다. 기본값 으로 RunCommand()primary 읽기 설정 (read preference) 사용합니다.

다음 예시 와 같이 ReadPreference 인스턴스 RunCommand()에 매개 변수로 전달하여 명령 실행에 대한 읽기 설정 (read preference) 설정하다 수 있습니다. Asynchronous 또는 Synchronous 탭 선택하여 해당 코드를 확인합니다.

var command = new BsonDocument("hello", 1);
var result = await database.RunCommandAsync<BsonDocument>(command, ReadPreference.Secondary);
var command = new BsonDocument("hello", 1);
var result = database.RunCommand<BsonDocument>(command, ReadPreference.Secondary);

읽기 설정 (read preference) 옵션에 대해 학습 보려면 MongoDB Server 매뉴얼의 읽기 설정 을 참조하세요.

RunCommand() 메서드에서 반환된 원시 명령 응답 문서 다음 필드가 포함되어 있습니다.

필드
설명

<command result>

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

ok

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

$clusterTime

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

operationTime

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

To 학습 more about logical time, see the Wikipedia entry on the logical clock.

다음 예시 dbStats 명령을 실행하여 sample_restaurants 데이터베이스 의 저장 통계를 조회 다음 반환된 BsonDocument 객체 에 ToJson() 메서드를 사용하여 명령 결과를 출력합니다. Asynchronous 또는 Synchronous 탭 선택하여 해당 코드를 확인합니다.

var command = new BsonDocument("dbStats", 1);
var result = await database.RunCommandAsync<BsonDocument>(command);
Console.WriteLine(result.ToJson());
var command = new BsonDocument("dbStats", 1);
var result = database.RunCommand<BsonDocument>(command);
Console.WriteLine(result.ToJson());

이 명령의 출력에는 이전 예시 에서 반환된 결과에 표시된 대로 데이터베이스 에 저장된 데이터에 대한 정보가 포함됩니다.

{ "db" : "sample_restaurants", "collections" : 2, "views" : 0, "objects" :
NumberLong(25438), "avgObjSize" : 548.95172576460413, "dataSize" : NumberLong(13964234),
"storageSize" : NumberLong(8056832), "totalFreeStorageSize" : NumberLong(0),
"numExtents" : NumberLong(0), "indexes" : 2, "indexSize" : NumberLong(1044480),
"indexFreeStorageSize" : NumberLong(0), "fileSize" : NumberLong(0), "nsSizeMB" : 0, "ok" : 1 }

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

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