Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$mergeObjects (expresión)

$mergeObjects

Combina varios documentos en un único documento.

Nota

Desambiguación

Esta página describe $mergeObjects cuando se utiliza como una expresión que fusiona una matriz de documentos.

También puede utilizar $mergeObjects (accumulator), que devuelve un documento combinado a partir de un grupo de documentos de entrada.

Cuando se usa como expresión, $mergeObjects tiene esta sintaxis:

{ $mergeObjects: <expression> }

El operando <expression> puede ser:

  • Una única expresión que se evalúa como una matriz de documentos para fusionar. Por ejemplo, $blogPosts donde el campo del documento blogPosts contiene una matriz de documentos.

  • Una matriz de expresiones, cada una de las cuales se evalúa como un documento. Por ejemplo, [ "$doc1", "$doc2", "$doc3" ], donde cada campo de documento contiene un único documento.

$mergeObjects Ignora los valores de entrada null. Si todos los valores de entrada son null, $mergeObjects devuelve un documento vacío { }.

$mergeObjects Sobrescribe los valores de los campos al fusionar los documentos. Si varios documentos de entrada contienen el mismo nombre de campo, la salida contendrá el valor del último documento de entrada que contenga el campo conflictivo.

Ejemplo
Resultados
{ $mergeObjects: [ { a: 1 }, null ] }
{ a: 1 }
{ $mergeObjects: [ null, null ] }
{ }
{
$mergeObjects: [
{ a: 1 },
{ a: 2, b: 2 },
{ a: 3, c: 3 }
]
}
{ a: 3, b: 2, c: 3 }
{
$mergeObjects: [
{ a: 1 },
{ a: 2, b: 2 },
{ a: 3, b: null, c: 3 }
]
}
{ a: 3, b: null, c: 3 }

Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.

El siguiente proceso utiliza $mergeObjects en $replaceWith para fusionar los subdocumentos imdb y tomatoes.critic de cada película en un único documento ratings. Ambos subdocumentos contienen un campo rating, por lo que $mergeObjects sobrescribe la calificación imdb con la calificación tomatoes.critic. Los campos únicos de cada subdocumento se conservan en el resultado.

db.movies.aggregate( [
{
$match: {
genres: "Action",
year: 2010,
"imdb.rating": { $exists: true },
"tomatoes.critic.rating": { $exists: true }
}
},
{ $sort: { title: 1 } },
{ $limit: 5 },
{
$replaceWith: {
title: "$title",
year: "$year",
ratings: { $mergeObjects: [ "$imdb", "$tomatoes.critic" ] }
}
}
] )

En el pipeline anterior:

  • $match filtra las películas de acción de 2010 con un imdb.rating y tomatoes.critic.rating existentes.

  • $sort ordena los documentos alfabéticamente por title.

  • $limit Restringe la salida a documentos 5 para mejorar la legibilidad.

  • $replaceWith utiliza $mergeObjects para fusionar $imdb y $tomatoes.critic en un campo ratings.

    • Debido a que ambos subdocumentos contienen un campo rating, $mergeObjects utiliza el valor de tomatoes.critic (el último argumento).

    • Los campos únicos votes y id de imdb, y numReviews y meter de tomatoes.critic, se conservan todos.

Califique esta página