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

$addToSet (función de ventana)

$addToSet

Devuelve una matriz con todos los valores únicos de una ventana específica.

El orden de los elementos en el arreglo devuelto es indefinido.

Nota

Desambiguación

Esta página describe $addToSet cuando se utiliza como función de ventana.

También puedes usar $addToSet en estos otros contextos:

{
$setWindowFields: {
...
output: {
<field>: {
$addToSet: <expression>
}
}
}
}

Si el valor de la expresión es una matriz, $addToSet agrega toda la matriz como un solo elemento.

Si el valor de la expresión es un documento, MongoDB determina que el documento es un duplicado si otro documento del arreglo coincide exactamente con el documento que se va a agregar. En concreto, el documento existente tiene exactamente los mismos campos y valores en el mismo orden.

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.

Este ejemplo utiliza la función de ventana $addToSet para mostrar cómo se acumulan los géneros únicos en las películas a lo largo del tiempo. Las películas se ordenan alfabéticamente por título, y la función de ventana registra todos los géneros únicos que han aparecido en las películas desde el inicio de la configuración de resultados hasta la película actual, inclusive.

db.movies.aggregate( [
{
$match: {
year: 2002,
genres: { $exists: true, $ne: [] }
}
},
{
$group: {
_id: { year: "$year", title: "$title", genre: { $first: "$genres" } },
}
},
{
$setWindowFields: {
sortBy: { "_id.title": 1 },
output: {
genresSeenSoFar: {
$addToSet: "$_id.genre",
window: {
documents: [ "unbounded", "current" ]
}
}
}
}
},
{
$project: {
_id: 0,
year: "$_id.year",
title: "$_id.title",
genre: "$_id.genre",
genresSeenSoFar: 1,
uniqueGenreCount: { $size: "$genresSeenSoFar" }
}
},
{
$limit: 8
}
] )

En el ejemplo:

El resultado demuestra cómo $addToSet acumula géneros únicos en los documentos. Observe que genresSeenSoFar pasa del género 1 al género 7 a medida que cada película añade su género al conjunto. El séptimo documento ('3 Extremes II') tiene el mismo uniqueGenreCount que el sexto porque su género (Terror) ya estaba en el conjunto. Esto demuestra que $addToSet solo añade valores únicos e ignora los duplicados.

Califique esta página