Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$limit (etapa de agregación)

$limit

Limita el número de documentos que se pasan a la siguiente etapa en el pipeline.

Puedes usar $limit para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

La etapa $limit tiene la siguiente forma de prototipo:

{ $limit: <positive 64-bit integer> }

$limit toma un entero positivo que especifica el número máximo de documentos a pasar.

Nota

A partir de MongoDB.5 0, el pipeline de agregación tiene $limit un límite de enteros de 64 bits. Los valores que se pasan al pipeline y que exceden este límite devolverán un error de argumento no válido.

Si utilizas la etapa $limit con cualquiera de:

asegurarse de incluir al menos un campo en la ordenación que contenga valores únicos, antes de pasar los resultados a la etapa $limit.

La ordenación en campos que contienen valores duplicados puede devolver un orden de clasificación inconsistente para esos campos duplicados en múltiples ejecuciones, especialmente cuando la colección está recibiendo activamente escrituras.

La forma más sencilla de garantizar la coherencia de ordenamiento es incluir el campo _id en la query de ordenación.

Consulte lo siguiente para obtener más información sobre cada uno:

Los ejemplos de esta página utilizan datos del conjunto de datos de muestra 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 se realizó alguna modificación en las bases de datos de muestra, es posible que se deban descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.

Considera el siguiente ejemplo:

db.movies.aggregate([
{ $limit : 5 }
])

Esta operación devuelve únicamente los primeros 5 documentos que le pasa el pipeline. $limit no tiene ningún efecto sobre el contenido de los documentos que pasa.

Los ejemplos de C# en esta página utilizan la base de datos sample_mflix de los conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta Primeros pasos en la documentación del controlador de MongoDB .NET/C#.

La siguiente clase Movie modela los documentos en la colección sample_mflix.movies:

[BsonIgnoreExtraElements]
public class Movie
{
[BsonId]
public ObjectId Id { get; set; }
[BsonElement("title")]
public string Title { get; set; } = null!;
[BsonElement("metacritic")]
public int Metacritic { get; set; }
}

Para utilizar el controlador .NET/C# de MongoDB y añadir una etapa $limit a una pipeline de agregación, utiliza la función Limit() método en un objeto PipelineDefinition.

El siguiente ejemplo crea una etapa de canalización que ordena las películas por título y limita el resultado a los primeros 5 documentos:

var pipeline = new EmptyPipelineDefinition<Movie>()
.Sort(Builders<Movie>.Sort.Ascending(m => m.Title))
.Limit(5);
{"_id": "...", "title": "!Women Art Revolution", "metacritic": "..."}
{"_id": "...", "title": "#chicagoGirl: The Social Network Takes on a Dictator", "metacritic": "..."}
{"_id": "...", "title": "$", "metacritic": "..."}
{"_id": "...", "title": "$9.99", "metacritic": "..."}
{"_id": "...", "title": "'71", "metacritic": "..."}

Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $limit a una canalización de agregación, utilice el Operador $limit en un objeto de canalización.

El siguiente ejemplo crea una etapa de pipeline que limita el número de documentos devueltos a 10. A continuación, el ejemplo ejecuta el pipeline de agregación:

const pipeline = [{ $limit: 10 }];
const cursor = collection.aggregate(pipeline);
return cursor;

Nota

Cuando un $sort precede a un $limit y no hay etapas intermedias que modifiquen el número de documentos, el optimizador puede fusionar el $limit con el $sort. Esto permite que la operación $sort solo mantenga los n mejores resultados a medida que avanza, donde n es el límite especificado, y garantiza que MongoDB solo necesite almacenar n elementos en memoria. Esta optimización sigue aplicándose cuando allowDiskUse es true y los elementos de n superan el límite de memoria de agregación.

Para aprender a utilizar $limit en un ejemplo completo, consulta el tutorial Filtrar datos.

Volver

$indexStats

Obtén una insignia de habilidad

Domina los “Fundamentos de la transformación de datos” de forma gratuita.

Más información

En esta página