

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# MongoDB 데이터 소스에 연결
<a name="AMG-mongodb-datasource"></a>

 MongoDB 데이터 소스를 사용하면 Amazon Managed Grafana에서 MongoDB의 데이터를 시각화할 수 있습니다.

**참고**  
이 데이터 소스는 Grafana Enterprise 전용입니다. 자세한 내용은 [Enterprise 플러그인에 대한 액세스 관리](upgrade-to-enterprise-plugins.md) 단원을 참조하십시오.  
또한 버전 9 이상을 지원하는 워크스페이스에서 이 데이터 소스를 사용하려면 적절한 플러그인을 설치해야 할 수 있습니다. 자세한 내용은 [플러그인을 사용하여 워크스페이스 확장](grafana-plugins.md) 단원을 참조하십시오.

## 사용법
<a name="mongo-usage"></a>

### 쿼리 편집기
<a name="mongo-query-editor"></a>

 쿼리 편집기에서는 MongoDB 쉘과 동일한 구문을 지원하지만, 다음과 같은 몇 가지 제한 사항이 적용됩니다. \$1 명령/쿼리를 하나만 실행할 수 있습니다. \$1 읽기 명령만 지원됩니다(**찾기** 및 **집계**). \$1 *대부분*의 객체 생성자는 지원되지 않습니다(지원되는 **ISODate** 제외).

 편집기는 다음과 같은 방식으로 MongoDB 쉘 구문을 확장합니다.
+  **데이터베이스 선택** - 일반 'db' 대신 데이터베이스 이름을 제공할 수 있습니다.
**참고**  
'db'를 계속 사용할 수 있습니다. 연결 문자열의 기본 데이터베이스를 참조합니다.

  ```
  sample_mflix.movies.find()
  ```
+  **집계 정렬** - 일반적으로 정렬은 집계 파이프라인 내의 단계에서 이루어지지만 MongoDB Atlas 프리 티어는 정렬을 허용하지 않습니다. 프리 티어를 사용하는 사용자에게 허용하도록 구문을 확장했습니다.
**참고**  
MongoDB는 이 구문에서 정렬을 수행하지 않습니다. 정렬은 컬렉션에서 결과를 쿼리한 후 수행됩니다.

  ```
  sample_mflix.movies.aggregate({}).sort({"time": 1})
  ```
+  빈 편집기에서 **Ctrl \$1 Space**를 누르면 사용 가능한 모든 데이터베이스의 선택 항목이 표시됩니다.
+  데이터베이스 뒤에 점을 입력하면 해당 데이터베이스에 사용할 수 있는 모든 컬렉션의 선택 항목이 표시됩니다.
+  컬렉션 뒤에 점을 입력하면 사용 가능한 쿼리 메서드가 표시됩니다.
+  쿼리 메서드 뒤에 점을 입력하면 sort/limit라는 추가 함수가 표시됩니다.

#### 쿼리 실행
<a name="mongo-running-the-query"></a>

 **Cmd \$1 S**를 눌러 쿼리를 실행합니다.

### 시계열
<a name="mongo-time-series"></a>

 시계열 데이터를 시각화할 때 플러그인은 시간으로 사용할 필드를 알아야 합니다. 이름 별칭이 "time"인 필드를 투영하면 됩니다. 필드 데이터 유형은 날짜여야 합니다.

 날짜가 아닌 데이터 유형을 날짜로 강제 적용할 수 있습니다. 이렇게 하면 날짜 이외의 필드를 시계열 시간으로 사용할 수 있습니다. 다음 예제에서는 MongoDB \$1dateFromParts 파이프라인 연산자를 사용하여 int 필드 "year"를 "time"으로 투영된 날짜로 변환하는 방법을 보여줍니다.

```
sample_mflix.movies.aggregate([
{"$match": { "year": {"$gt" : 2000} }},
{"$group": { "_id": "$year", "count": { "$sum": 1 }}},
{"$project": { "_id": 0, "count": 1, "time": { "$dateFromParts": {"year": "$_id", "month": 2}}}}
]
).sort({"time": 1})
```

### 진단
<a name="mongo-diagnostics"></a>

 [진단 명령](https://docs.mongodb.com/manual/reference/command/nav-diagnostic/) 

 현재 지원되는 진단 명령은 다음과 같습니다. 'stats', 'serverStatus', 'replSetGetStatus', 'getLog', 'connPoolStats', 'connectionStatus', 'buildInfo', 'dbStats', 'hostInfo', 'lockInfo'

 예시: 

```
admin.connectionStatus()  // run the connectionStatus command
admin.connectionStatus({"authInfo.authenticatedUserRoles": 1})  // run and only return the "authInfo.authenticatedUserRoles" field
admin.connPoolStats({arg: "pool"})  // run the connPoolStats command and pass 1 argument
admin.serverStatus({args: {repl: 0, metrics:0}})  // run the serverStatus command and pass multiple args
```

### 매크로
<a name="mongo-macros"></a>

 쿼리에서 대시보드 시간 범위를 참조할 수 있습니다.
+ ` $__timeFrom ` - 대시보드 시작 시간을 참조하는 매크로
+ ` $__timeTo ` - 대시보드 종료 시간을 참조하는 매크로

```
          $__timeTo -  ``` sample_mflix.movies.find({released: {$gt:
          "$__timeFrom"}}).sort({year: 1})
```

#### 템플릿 변수
<a name="mongo-variables"></a>

MongoDB는 '복합 변수'라는 아이디어를 지원합니다. 이 아이디어를 통해 하나의 변수를 여러 변수로 사용하여 복잡한 다중 키 필터를 수행할 수 있습니다.

복합 변수를 생성하려면 `_var1_var2`와 같이 밑줄을 사용하여 변수를 구분하는 명명 규칙을 사용합니다(밑줄로 시작해야 함). 쿼리할 때 응답은 `val1-val2` 형식이어야 합니다.

**예제: 영화 이름과 연도에 대한 결과를 필터링하려고 합니다.**

1. `_movie_year` 유형의 쿼리에 대한 변수를 생성하세요.

1. 다음 예제와 같이 하나의 movie-year 속성을 포함하는 항목 배열을 반환하는 쿼리로 변수 쿼리를 설정합니다.

   ```
   // Example sample_mflix.movies.aggregate([
             {"$match": {year: {"$gt": 2011}}},
             {"$project": {_id: 0, movie_year: {"$concat":
             ["$title", " - ", {"$toString":"$year"}]}}}
             ])
   ```

   ```
    // [{"movie-year": "Ted - 2016"},
             {"movie-year": "The Terminator -
             1985"}]
   ```

1. 이제 쿼리에서 "\$1\$1variable" 구문을 사용하여 "Movie" 및 "Year"를 별도의 템플릿 변수로 참조할 수 있습니다.

##### 임시 필터 사용
<a name="mongo-adhoc"></a>

모든 이름의 표준 '임시 필터' 유형 변수 외에도 두 번째 헬퍼 변수를 생성해야 합니다. `mongodb\$1adhoc\$1query` 이름 및 쿼리 편집기와 호환되는 값을 포함하는 '상수' 유형이어야 합니다. 쿼리 결과는 선택 가능한 필터를 채우는 데 사용됩니다. 이 변수는 더 이상 용도가 없으므로 보기에서 숨기도록 선택할 수 있습니다.

```
          sample_mflix.movies.aggregate([
          {"$group": { "_id": "$year"}},
          {"$project": { "year": "$_id","_id":
          0 }} ] )
```