

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

# $ gabungkan
<a name="merge"></a>

Diperkenalkan pada 8.0

T `$merge` ahap agregasi di Amazon DocumentDB digunakan untuk menggabungkan hasil tahap pipeline sebelumnya ke dalam pengumpulan target. Ini berguna untuk memperbarui atau menyisipkan dokumen dalam koleksi target berdasarkan data dari dokumen input.

T `$merge` ahap ini memungkinkan Anda untuk melakukan berbagai tindakan berdasarkan kondisi pencocokan antara dokumen input dan koleksi target, seperti:

```
- Insert new documents
- Update existing documents
- Delete documents
- Fail the operation if there are any conflicts
```

**Parameter**
+ `into`: (wajib) Nama koleksi target untuk menggabungkan dokumen masukan.
+ `on`: (wajib) Bidang yang akan digunakan sebagai kondisi pencocokan antara dokumen input dan koleksi target.
+ `whenMatched`: (opsional) Tindakan yang harus dilakukan saat dokumen input cocok dengan dokumen yang ada dalam koleksi target. Nilai yang didukung adalah:`"merge"`,`"replace"`,`"keepExisting"`, dan`"fail"`. Amazon DocumentDB tidak mendukung penentuan pipeline agregasi sebagai `whenMatched` nilai.
+ `whenNotMatched`: (opsional) Tindakan yang harus dilakukan ketika dokumen input tidak cocok dengan dokumen apa pun dalam koleksi target. Nilai yang didukung adalah: `"insert"` dan`"fail"`.
+ `bypassDocumentValidation`: (opsional) Saat diset `true` el ke, dokumen yang ditulis ke koleksi target oleh `$merge` tahap melewati aturan validasi skema apa pun (`$jsonSchema`) yang ditentukan pada koleksi itu. Defaultnya adalah`false`, yang memberlakukan aturan validasi koleksi target. Ini didukung di Amazon DocumentDB 8.0.

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

Contoh berikut menunjukkan cara menggunakan `$merge` stage untuk memperbarui `users` koleksi dengan data baru dari pipeline input.

**Buat dokumen sampel **

```
db.users.insertMany([
  { _id: 1, name: "John Doe", email: "john@example.com" },
  { _id: 2, name: "Jane Smith", email: "jane@example.com" }
]);

db.inputData.insertMany([
  { _id: 1, name: "John Doe", email: "john@example.com", phone: "123-456-7890" },
  { _id: 3, name: "Bob Johnson", email: "bob@example.com", phone: "987-654-3210" }
]);
```

**Contoh kueri **

```
db.inputData.aggregate([
  {
    $merge: {
      into: "users",
      on: "_id",
      whenMatched: "merge",
      whenNotMatched: "insert"
    }
  }
])
```

**Keluaran **

Setelah menjalankan `$merge` pipa, `users` koleksi akan berisi dokumen-dokumen berikut:

```
[
  { _id: 1, name: "John Doe", email: "john@example.com", phone: "123-456-7890" },
  { _id: 2, name: "Jane Smith", email: "jane@example.com" },
  { _id: 3, name: "Bob Johnson", email: "bob@example.com", phone: "987-654-3210" }
]
```

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

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

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

Berikut adalah contoh penggunaan operator $merge dalam Node.js aplikasi:

```
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');

  await db.collection('inputData').aggregate([
    {
      $merge: {
        into: 'users',
        on: '_id',
        whenMatched: 'merge',
        whenNotMatched: 'insert'
      }
    }
  ]).toArray();

  const users = await db.collection('users').find({}).toArray();
  console.log(users);

  await client.close();
}

example();
```

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

Berikut adalah contoh penggunaan operator $merge dalam aplikasi 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']

    # Assumes collections 'users' and 'inputData' already exist with sample data
    db.inputData.aggregate([
        {
            '$merge': {
                'into': 'users',
                'on': '_id',
                'whenMatched': 'merge',
                'whenNotMatched': 'insert'
            }
        }
    ])

    users = list(db.users.find({}))
    print(users)

    client.close()

example()
```

------