

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

O `$substrCP` operador no Amazon DocumentDB é usado para extrair uma substring de uma string, onde a substring é especificada como um intervalo de pontos de código UTF-8 (CP). Esse operador é particularmente útil ao trabalhar com cadeias de caracteres Unicode, pois permite extrair substrings sem precisar se preocupar com a representação de bytes subjacente dos caracteres.

Ao contrário do `$substrBytes` operador, que opera em posições de bytes, o `$substrCP` operador trabalha com posições de pontos de código. Isso facilita o trabalho com cadeias de caracteres que contêm caracteres não ASCII, pois o número de pontos de código pode não corresponder ao número de bytes ou caracteres.

**Parâmetros**
+ `string`: a string de entrada da qual extrair a substring.
+ `start`: a posição inicial do ponto de código (com base em zero) da qual extrair a substring.
+ `length`: o número de pontos de código a serem extraídos.

## Exemplo (MongoDB Shell)
<a name="substrCP-examples"></a>

Neste exemplo, usaremos o `$substrCP` operador para extrair a abreviatura do estado de uma string contendo a localização da mesa do funcionário.

**Crie documentos de amostra**

```
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" }
]);
```

**Exemplo de consulta**

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

**Saída**

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

Neste exemplo, sabemos que a abreviatura do estado começa no 25º ponto de código no `Desk` campo e tem 2 pontos de código. Ao usar o `$substrCP` operador, podemos extrair a abreviatura do estado sem precisar nos preocupar com a representação de bytes subjacente da string.

## Exemplos de código
<a name="substrCP-code"></a>

Para ver um exemplo de código para usar o `$substrCP` comando, escolha a guia do idioma que você deseja usar:

------
#### [ 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()
```

Nos exemplos do Node.js e do Python, usamos o `$substrCP` operador para extrair a abreviatura do estado do `Desk` campo, semelhante ao exemplo do MongoDB Shell.

------