Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
$merge
Introducido en 8.0
La fase de $merge agregación de Amazon DocumentDB se utiliza para combinar los resultados de la fase de canalización anterior en una colección de destino. Esto resulta útil para actualizar o insertar documentos en una colección de destino en función de los datos de los documentos de entrada.
La $merge etapa permite realizar varias acciones en función de la condición de coincidencia entre los documentos de entrada y la colección de destino, como:
- Insert new documents - Update existing documents - Delete documents - Fail the operation if there are any conflicts
Parámetros
-
into: (obligatorio) El nombre de la colección de destino en la que se combinarán los documentos de entrada. -
on: (obligatorio) Los campos que se van a utilizar como condición de coincidencia entre los documentos de entrada y la colección de destino. -
whenMatched: (opcional) La acción que se debe realizar cuando el documento de entrada coincide con un documento existente en la colección de destino. Los valores admitidos son:"merge","replace","keepExisting"y"fail". Amazon DocumentDB no admite la especificación de una canalización de agregación comowhenMatchedvalor. -
whenNotMatched: (opcional) La acción que se debe realizar cuando el documento de entrada no coincide con ningún documento de la colección de destino. Los valores admitidos son:"insert"y"fail". -
bypassDocumentValidation: (opcional) Si se establece entrue, los documentos escritos en la colección de destino por$mergefase omiten cualquier regla de validación de esquemas ($jsonSchema) definida en esa colección. El valor predeterminado esfalse, que hace cumplir las reglas de validación de la colección de destino. Esto es compatible con Amazon DocumentDB 8.0.
Ejemplo (MongoDB Shell)
El siguiente ejemplo muestra cómo usar la $merge etapa para actualizar una users colección con datos nuevos de una canalización de entrada.
Cree documentos de muestra
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" } ]);
Ejemplo de consulta
db.inputData.aggregate([ { $merge: { into: "users", on: "_id", whenMatched: "merge", whenNotMatched: "insert" } } ])
Salida
Tras ejecutar la $merge canalización, la users colección contendrá los siguientes documentos:
[
{ _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" }
]
Ejemplos de código
Para ver un ejemplo de código sobre el uso del $merge comando, elige la pestaña del idioma que quieres usar: