Definición
Devuelve los n valores más pequeños en un arreglo.
Nota
Desambiguación
Esta página describe $minN cuando se usa como una expresión, que devuelve los valores mínimos de n en una matriz.
También puedes usar $minN en estos otros contextos:
$minN (accumulator), que devuelve un valor agregado basado en un número variable de documentos de entrada.$minN (window function), que se utiliza en la etapa$setWindowFieldspara devolver los valores mínimosnde los documentos en una ventana en particular.
Sintaxis
{ $minN: { n: <expression>, input: <expression> } }
Comportamiento
No puedes especificar un valor de
nmenor que1.$minNFiltra los valoresnullque se encuentran en el arrayinput.Si el
nespecificado es mayor o igual que el número de elementos en el arrayinput,$minNdevuelve todos los elementos en el arrayinput.Si
inputse resuelve en un valor que no es un array, la expresión produce un error.Si
inputcontiene elementos de diferentes tipos, las comparaciones entre tipos siguen el orden de comparación BSON.
Ejemplo
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 ejemplo utiliza el operador $minN para devolver los dos géneros, ordenados alfabéticamente, de cada película. Los resultados se devuelven en el nuevo campo firstAlphabeticalGenres creado por $addFields.
db.movies.aggregate( [ { $match: { $expr: { $gte: [ { $size: "$genres" }, 3 ] } } }, { $addFields: { firstAlphabeticalGenres: { $minN: { n: 2, input: "$genres" } } } }, { $project: { _id: 0, title: 1, genres: 1, firstAlphabeticalGenres: 1 } }, { $limit: 5 } ] )
La tubería precedente:
Utiliza
$matchpara filtrar películas que tengan al menos tres géneros.Utiliza
$addFieldspara crear un campofirstAlphabeticalGenres.$minNconn: 2devuelve los dos valores alfabéticamente primeros del arraygenres.Utiliza
$projectpara devolver solo los campostitle,genresyfirstAlphabeticalGenres.Utiliza
$limitpara devolver cinco documentos y mejorar la legibilidad.