$unisci - Amazon DocumentDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

$unisci

Introdotto nella versione 8.0

La fase di $merge aggregazione in Amazon DocumentDB viene utilizzata per unire i risultati della fase precedente della pipeline in una raccolta di destinazione. Ciò è utile per aggiornare o inserire documenti in una raccolta di destinazione in base ai dati dei documenti di input.

La $merge fase consente di eseguire varie azioni in base alla condizione di corrispondenza tra i documenti di input e la raccolta di destinazione, ad esempio:

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

Parametri

  • into: (obbligatorio) Il nome della raccolta di destinazione in cui unire i documenti di input.

  • on: (obbligatorio) I campi da utilizzare come condizione di corrispondenza tra i documenti di input e la raccolta di destinazione.

  • whenMatched: (opzionale) L'azione da eseguire quando il documento di input corrisponde a un documento esistente nella raccolta di destinazione. I valori supportati sono: "merge", "replace", "keepExisting" e "fail".

  • whenNotMatched: (opzionale) L'azione da eseguire quando il documento di input non corrisponde a nessun documento nella raccolta di destinazione. I valori supportati sono: "insert" e"fail".

Esempio (MongoDB Shell)

L'esempio seguente mostra come utilizzare lo $merge stage per aggiornare una users raccolta con nuovi dati da una pipeline di input.

Crea documenti di esempio

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

Esempio di interrogazione

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

Output

Dopo aver eseguito la $merge pipeline, la users raccolta conterrà i seguenti documenti:

[ { _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" } ]

Esempi di codice

Per visualizzare un esempio di codice per l'utilizzo del $merge comando, scegliete la scheda relativa alla lingua che desiderate utilizzare:

Node.js

Ecco un esempio di utilizzo dell'operatore $merge in un'applicazione 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

Ecco un esempio di utilizzo dell'operatore $merge in un'applicazione 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()