

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

`$substrCP`Operator di Amazon DocumentDB digunakan untuk mengekstrak substring dari string, di mana substring ditentukan sebagai rentang titik kode UTF-8 (CP). Operator ini sangat berguna ketika bekerja dengan string Unicode, karena memungkinkan Anda untuk mengekstrak substring tanpa harus khawatir tentang representasi byte yang mendasari karakter.

Berbeda dengan `$substrBytes` operator, yang beroperasi pada posisi byte, `$substrCP` operator bekerja dengan posisi titik kode. Ini membuatnya lebih mudah untuk bekerja dengan string yang berisi karakter non-ASCII, karena jumlah titik kode mungkin tidak cocok dengan jumlah byte atau karakter.

**Parameter**
+ `string`: String input dari mana untuk mengekstrak substring.
+ `start`: Posisi titik kode awal (berbasis nol) dari mana untuk mengekstrak substring.
+ `length`: Jumlah poin kode untuk diekstrak.

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

Dalam contoh ini, kita akan menggunakan `$substrCP` operator untuk mengekstrak singkatan status dari string yang berisi lokasi meja karyawan.

**Buat dokumen sampel**

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

**Contoh kueri**

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

**Keluaran**

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

Dalam contoh ini, kita tahu bahwa singkatan status dimulai pada titik kode ke-25 di `Desk` bidang dan panjangnya 2 poin kode. Dengan menggunakan `$substrCP` operator, kita dapat mengekstrak singkatan status tanpa harus khawatir tentang representasi byte yang mendasarinya dari string.

## Contoh kode
<a name="substrCP-code"></a>

Untuk melihat contoh kode untuk menggunakan `$substrCP` perintah, pilih tab untuk bahasa yang ingin Anda gunakan:

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

Dalam contoh Node.js dan Python, kami menggunakan `$substrCP` operator untuk mengekstrak singkatan status dari `Desk` bidang, mirip dengan contoh MongoDB Shell.

------