$ bergabung - Amazon DocumentDB

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

$ bergabung

Diperkenalkan pada 8.0

Tahap $merge 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 masukan.

$mergeTahap ini memungkinkan Anda untuk melakukan berbagai tindakan berdasarkan kondisi pencocokan antara dokumen input dan pengumpulan 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 ke dalam.

  • on: (wajib) Bidang yang akan digunakan sebagai kondisi yang cocok antara dokumen masukan dan pengumpulan target.

  • whenMatched: (opsional) Tindakan yang harus dilakukan ketika dokumen input cocok dengan dokumen yang ada dalam koleksi target. Nilai yang didukung adalah:"merge","replace","keepExisting", dan"fail".

  • 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".

Contoh (MongoDB Shell)

Contoh berikut menunjukkan bagaimana menggunakan $merge tahap 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 pipeline, 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

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 aplikasi 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'); 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 menggunakan 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()