데이터베이스 명령 실행
개요
이 가이드 에서는 .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);
읽기 기본 설정 지정
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()
메서드에서 반환된 원시 명령 응답 문서 에는 다음 필드가 포함되어 있습니다.
필드 | 설명 |
---|---|
| 데이터베이스 명령 과 관련된 필드입니다. 예를 예시, |
| 명령이 성공했는지( |
| 서명된 클러스터 시간이 포함된 문서 입니다. 클러스터 시간은 작업 순서에 사용되는 논리적 시간입니다. 이 필드 는 복제본 세트 또는 샤딩된 클러스터에서 실행 되는 명령에만 적용됩니다. |
| 작업 실행의 논리적 시간입니다. 이 필드 는 복제본 세트 또는 샤딩된 클러스터에서 실행 되는 명령에만 적용됩니다. |
팁
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 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.