

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

L'`$substrBytes`opérateur dans Amazon DocumentDB est utilisé pour extraire une sous-chaîne d'une chaîne en fonction d'une plage d'octets spécifiée. Cet opérateur est utile lorsque vous devez extraire une sous-chaîne d'une chaîne et que le nombre d'octets requis pour représenter chaque caractère de la chaîne est important.

Contrairement à `$substrCP` ce qui fonctionne sur le nombre de points de code Unicode, `$substrBytes` fonctionne sur le nombre d'octets nécessaires pour représenter les caractères de la chaîne. Cela peut être particulièrement utile lorsque vous travaillez avec des chaînes contenant des caractères non ASCII, car la représentation de ces caractères peut nécessiter plus d'un octet.

\$1Remarque :\$1 `$substr` est obsolète depuis la version 3.4. `$substr`est désormais un alias pour`$substrBytes`.

**Paramètres**
+ `string`: chaîne d'entrée à partir de laquelle la sous-chaîne sera extraite.
+ `startByte`: la position initiale de l'octet de base zéro de la sous-chaîne à extraire. Une valeur négative peut être utilisée pour spécifier une position à partir de la fin de la chaîne.
+ `length`: le nombre d'octets de la sous-chaîne à extraire.

## Exemple (MongoDB Shell)
<a name="substrBytes-examples"></a>

Dans cet exemple, nous allons l'utiliser `$substrBytes` pour extraire une sous-chaîne d'une chaîne contenant des caractères non ASCII.

**Création d'exemples de documents**

```
db.people.insertMany([
  { "_id": 1, "Desk": "Düsseldorf-NRW-021" },
  { "_id": 2, "Desk": "Bremerhaven-HBB-32a" },
  { "_id": 3, "Desk": "Norderstedt-SHH-892.50" },
  { "_id": 4, "Desk": "Brandenburg-BBB-78" }
]);
```

**Exemple de requête**

```
db.people.aggregate([
  {
    $project: {
      "state": { $substrBytes: [ "$Desk", 12, 3] }
    }
  }
])
```

**Sortie**

```
{ "_id": 1, "state": "NRW" },
{ "_id": 2, "state": "HBB" },
{ "_id": 3, "state": "SHH" },
{ "_id": 4, "state": "BBB" }
```

Dans cet exemple, nous utilisons `$substrBytes` pour extraire une sous-chaîne de 3 octets à partir du 12e octet du `Desk` champ. Cela nous permet d'extraire l'abréviation d'état à 2 caractères, même si la chaîne peut contenir des caractères non ASCII.

## Exemples de code
<a name="substrBytes-code"></a>

Pour afficher un exemple de code relatif à l'utilisation de la `$substrBytes` commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

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

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

async function example() {
  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 people = db.collection('people');

  const result = await people.aggregate([
    {
      $project: {
        "state": { $substrBytes: ["$Desk", 12, 3] }
      }
    }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

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

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client.test
    people = db.people

    result = list(people.aggregate([
        {
            '$project': {
                "state": { '$substrBytes': ["$Desk", 12, 3] }
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------