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 (operador de acumulación)

$mergeObjects

Devuelve un documento creado al combinar los documentos de entrada para cada grupo.

El acumulador $mergeObjects está disponible en estas etapas:

Nota

Desambiguación

Esta página describe $mergeObjects cuando se utiliza como acumulador. Los acumuladores devuelven un valor agregado a partir de un grupo de documentos de entrada.

También puedes usar $mergeObjects (expression), que fusiona una serie de documentos en un solo documento.

{ $mergeObjects: <expression> }

El <expression> puede ser cualquier expresión válida que se evalúe como un 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.

Cree una colección movieReviews:

db.movieReviews.insertMany( [
{
title: "Galactic Odyssey",
source: "filmCritic",
data: { rating: 8.1, votes: 1482903 }
},
{
title: "Galactic Odyssey",
source: "viewerVault",
data: { tomatometer: 79, audienceScore: 85 }
},
{
title: "Neon Horizon",
source: "filmCritic",
data: { rating: 7.4, votes: 983201 }
},
{
title: "Neon Horizon",
source: "viewerVault",
data: { tomatometer: 68, audienceScore: 74 }
},
{
title: "The Last Protocol",
source: "filmCritic",
data: { rating: 8.7, votes: 2104567 }
},
{
title: "The Last Protocol",
source: "viewerVault",
data: { tomatometer: 91, audienceScore: 88 }
}
] )

Cada película tiene dos documentos:

  • Uno de filmCritic con los campos rating y votes.

  • Uno de viewerVault con los campos tomatometer y audienceScore.

Debido a que los dos documentos fuente tienen nombres de campo diferentes, $mergeObjects puede combinarlos en un perfil completo que incluya los cuatro campos.

El siguiente proceso utiliza $mergeObjects en una etapa $group para combinar los datos de las reseñas de cada fuente en un único documento para cada película:

db.movieReviews.aggregate( [
{
$group: {
_id: "$title",
allRatings: { $mergeObjects: "$data" }
}
},
{ $sort: { _id: 1 } }
] )

En el pipeline anterior:

  • $group agrupa los documentos por title y utiliza $mergeObjects para fusionar los data subdocumentos de cada fuente. Dado que los documentos de FilmCritic y ViewerVault contienen nombres de campo diferentes, el resultado fusionado incluye todos los campos de ambas fuentes.

  • $sort ordena los resultados alfabéticamente por título.

Califique esta página