

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# \$1 zusammenführen
<a name="merge"></a>

In 8.0 eingeführt

Die `$merge` Aggregationsphase in Amazon DocumentDB wird verwendet, um die Ergebnisse der vorherigen Pipeline-Phase in einer Zielsammlung zusammenzuführen. Dies ist nützlich, um Dokumente auf der Grundlage der Daten aus den Eingabedokumenten zu aktualisieren oder in eine Zielsammlung einzufügen.

In dieser `$merge` Phase können Sie verschiedene Aktionen ausführen, die auf der Übereinstimmungsbedingung zwischen den Eingabedokumenten und der Zielsammlung basieren, z. B.:

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

**Parameter**
+ `into`: (erforderlich) Der Name der Zielsammlung, zu der die Eingabedokumente zusammengeführt werden sollen.
+ `on`: (erforderlich) Die Felder, die als Vergleichsbedingung zwischen den Eingabedokumenten und der Zielsammlung verwendet werden sollen.
+ `whenMatched`: (optional) Die Aktion, die ausgeführt werden soll, wenn das Eingabedokument mit einem vorhandenen Dokument in der Zielsammlung übereinstimmt. Unterstützte Werte sind `"merge"`, `"replace"`, `"keepExisting"` und `"fail"`.
+ `whenNotMatched`: (optional) Die Aktion, die ausgeführt werden soll, wenn das Eingabedokument mit keinem Dokument in der Zielsammlung übereinstimmt. Unterstützte Werte sind: `"insert"` und`"fail"`.

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

Das folgende Beispiel zeigt, wie der `$merge` Stagingbereich verwendet wird, um eine `users` Sammlung mit neuen Daten aus einer Eingabepipeline zu aktualisieren.

**Erstellen Sie Beispieldokumente**

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

**Beispiel für eine Abfrage**

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

**Ausgabe**

Nach dem Ausführen der `$merge` Pipeline wird die `users` Sammlung die folgenden Dokumente enthalten:

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

## Codebeispiele
<a name="merge-code"></a>

Um ein Codebeispiel für die Verwendung des `$merge` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

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

Hier ist ein Beispiel für die Verwendung des \$1merge-Operators in einer Node.js -Anwendung:

```
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 ]

Hier ist ein Beispiel für die Verwendung des \$1merge-Operators in einer Python-Anwendung:

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

------