Definição
$limitLimita o número de documentos passados para o estágio seguinte no pipeline.
Compatibilidade
Você pode utilizar o $limit para implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
The $limit stage has the following prototype form:
{ $limit: <positive 64-bit integer> }
$limit recebe um número inteiro positivo que especifica o número máximo de documentos a serem repassados.
Observação
The $limit pipeline aggregation has a 64-bit integer limit. MongoDB returns an invalid argument error when values exceed this limit.
Comportamento
Utilizando $limit com Resultados ordenados
If using the $limit stage with any of:
a fase de agregação
$sort,o método
sort(), ouo campo
sortao comandofindAndModifyou ao métodofindAndModify()shell,
be sure to include at least one field in your sort that contains unique values, before passing results to the $limit stage.
A classificação em campos que contêm valores duplicados pode retornar uma ordem de classificação inconsistente para esses campos duplicados em várias execuções, especialmente quando a **coleção** está recebendo gravações ativamente.
A maneira mais fácil de garantir consistência de classificação é incluir o campo _id em sua query de classificação.
Consulte o seguinte para obter mais informações sobre cada um deles:
Exemplos
Os exemplos nesta página usam dados do conjunto de dados sample_mflix. Para obter detalhes sobre como carregar este conjunto de dados em sua implantação do MongoDB autogerenciado, consulte Carregar o conjunto de dados de amostra. Se você fez alguma modificação nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.
Considere o seguinte exemplo:
db.movies.aggregate([ { $limit : 5 } ])
This operation returns only the first 5 documents passed to it by the pipeline. $limit has no effect on the content of the documents it passes.
Os exemplos de C# nesta página utilizam o banco de dados sample_mflix a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de exemplo, consulte Introdução na documentação do driver MongoDB .NET/C#.
A seguinte classe Movie modela os documentos na collection sample_mflix.movies:
[] public class Movie { [] public ObjectId Id { get; set; } [] public string Title { get; set; } = null!; [] public int? Year { get; set; } [] public int? Runtime { get; set; } [] public string? Rated { get; set; } [] public int Metacritic { get; set; } [] public string? Plot { get; set; } [] public string? Type { get; set; } [] public string[]? Cast { get; set; } [] public string[]? Directors { get; set; } [] public string[]? Writers { get; set; } [] public ImdbData? Imdb { get; set; } }
Para usar o driver MongoDB .NET/C# para adicionar um estágio $limit a uma agregação pipeline, chame o método UnionWith() em um objeto PipelineDefinition.
O exemplo a seguir cria um estágio de pipeline que classifica os filmes por título e limita o resultado aos primeiros 5 documentos:
var pipeline = new EmptyPipelineDefinition<Movie>() .Sort(Builders<Movie>.Sort.Ascending(m => m.Title)) .Limit(5);
{"_id": "...", "title": "!Women Art Revolution", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."} {"_id": "...", "title": "#chicagoGirl: The Social Network Takes on a Dictator", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."} {"_id": "...", "title": "$", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."} {"_id": "...", "title": "$9.99", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."} {"_id": "...", "title": "'71", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."}
Para usar o driver Node.js do MongoDB para adicionar um estágio $limit a um pipeline de agregação , use o operador $limit em um objeto de pipeline.
O exemplo a seguir cria um estágio de pipeline que limita o número de documentos retornados a 10. O exemplo em seguida executa o pipeline de agregação:
const pipeline = [{ $limit: 10 }]; const cursor = collection.aggregate(pipeline); return cursor;
Observação
When a $sort precedes a $limit and there are no intervening stages that modify the number of documents, the optimizer can coalesce the $limit into the $sort. This allows the $sort operation to only maintain the top n results as it progresses, where n is the specified limit, and ensures that MongoDB only needs to store n items in memory. This optimization still applies when allowDiskUse is true and the n items exceed the aggregation memory limit.
Saiba mais
To learn how to use $limit in a full example, see the Filter Data in an Aggregation Pipeline tutorial.