Definición
Devuelve los n valores más pequeños en un arreglo.
Nota
Desambiguación
Esta página describe $minN cuando se utiliza como expresión, que devuelve los n valores mínimos de un arreglo.
También puede 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ínimos dende los documentos de una ventana determinada.
Sintaxis
{ $minN: { n: <expression>, input: <expression> } }
Comportamiento
No puedes especificar un valor de
nmenor que1.$minNfiltra los valores denullencontrados en el arregloinput.Si el
nespecificado es mayor o igual al número de elementos en el arregloinput,$minNdevuelve todos los elementos en el arregloinput.Si
inputse resuelve en un valor que no es un arreglo, la expresión produce un error.Si
inputcontiene elementos de diferentes tipos, las comparaciones entre tipos siguen el orden de comparación de 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 la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si realizó alguna modificación en las bases de datos de muestra, es posible que deba descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.
El siguiente ejemplo utiliza el operador $minN para devolver los dos primeros géneros alfabéticamente para 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 } ] )
El pipeline anterior:
Utiliza
$matchpara usar el filtro películas que tengan al menos tres géneros.Utiliza
$addFieldspara crear un campofirstAlphabeticalGenres.$minNconn: 2devuelve los dos primeros valores alfabéticamente del arreglogenres.Utiliza
$projectpara devolver solo los campostitle,genresyfirstAlphabeticalGenres.Utiliza
$limitpara devolver cinco documentos para mejorar la legibilidad.