

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

# \$1substrCP
<a name="substrCP"></a>

Amazon DocumentDB의 `$substrCP` 연산자는 문자열에서 하위 문자열을 추출하는 데 사용되며, 여기서 하위 문자열은 UTF-8 코드 포인트(CP)의 범위로 지정됩니다. 이 연산자는 문자의 기본 바이트 표현에 대해 걱정할 필요 없이 하위 문자열을 추출할 수 있으므로 유니코드 문자열로 작업할 때 특히 유용합니다.

바이트 위치에서 작동하는 `$substrBytes` 연산자와 달리 연`$substrCP`산자는 코드 포인트 위치에서 작동합니다. 따라서 코드 포인트 수가 바이트 또는 문자 수와 일치하지 않을 수 있으므로 ASCII가 아닌 문자가 포함된 문자열로 더 쉽게 작업할 수 있습니다.

**파라미터**
+ `string`: 하위 문자열을 추출할 입력 문자열입니다.
+ `start`: 하위 문자열을 추출할 시작 코드 포인트 위치(0 기반)입니다.
+ `length`: 추출할 코드 포인트 수입니다.

## 예제(MongoDB 쉘)
<a name="substrCP-examples"></a>

이 예제에서는 `$substrCP` 연산자를 사용하여 직원의 사무실 위치가 포함된 문자열에서 상태 약어를 추출합니다.

**샘플 문서 생성**

```
db.people.insert([
  { "_id": 1, "first_name": "Jane", "last_name": "Doe", "Desk": "12 Main St, Minneapolis, MN 55401" },
  { "_id": 2, "first_name": "John", "last_name": "Doe", "Desk": "456 Oak Rd, New Orleans, LA 70032" },
  { "_id": 3, "first_name": "Steve", "last_name": "Smith", "Desk": "789 Elm Ln, Bakersfield, CA 93263" }
]);
```

**쿼리 예제**

```
db.people.aggregate([
  {
    $project: {
      "state": { $substrCP: ["$Desk", 25, 2] }
    }
  }
]);
```

**출력**

```
{ "_id" : 1, "state" : "MN" }
{ "_id" : 2, "state" : "LA" }
{ "_id" : 3, "state" : "CA" }
```

이 예제에서는 상태 약어가 `Desk` 필드의 25번째 코드 포인트에서 시작되고 2개의 코드 포인트 길이임을 알고 있습니다. `$substrCP` 연산자를 사용하면 문자열의 기본 바이트 표현에 대해 걱정할 필요 없이 상태 약어를 추출할 수 있습니다.

## 코드 예제
<a name="substrCP-code"></a>

`$substrCP` 명령을 사용하기 위한 코드 예제를 보려면 사용하려는 언어의 탭을 선택합니다.

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function findStates() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const result = await db.collection('people').aggregate([
    {
      $project: {
        "state": { $substrCP: ["$Desk", 25, 2] }
      }
    }
  ]).toArray();
  console.log(result);
  client.close();
}

findStates();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def find_states():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    result = list(db.people.aggregate([
        {
            '$project': {
                'state': { '$substrCP': ['$Desk', 25, 2] }
            }
        }
    ]))
    print(result)
    client.close()

find_states()
```

Node.js 및 Python 예제 모두에서 `$substrCP` 연산자를 사용하여 MongoDB Shell 예제와 마찬가지로 `Desk` 필드에서 상태 약어를 추출합니다.

------