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 etapa de $merge agregación de Amazon DocumentDB se utiliza para combinar los resultados de la etapa 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 diversas 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 van a combinar 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". -
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) Cuando se establece entrue, los documentos escritos en la colección de destino por la$mergeetapa omiten las reglas de validación de esquemas ($jsonSchema) definidas 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 utilizar el $merge escenario para actualizar una users colección con nuevos datos 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 para usar el $merge comando, elija la pestaña correspondiente al idioma que desee usar: