Visão geral
Neste guia, você pode aprender a especificar quais documentos retornar de uma operação de leitura encadeando os seguintes métodos ao método Find():
Limit(): especifica o número máximo de documentos para retornar de uma query
Sort(): Especifica a ordem de classificação para os documentos devolvidos
Skip(): Especifica o número de documentos a ignorar antes de retornar os resultados da consulta
Dados de amostra
Os exemplos neste guia usam a collection restaurants no banco de dados sample_restaurants dos conjuntos de banco de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Os exemplos nesta página utilizam a seguinte classe Restaurant como um modelo para os documentos na coleção:
[] public class Restaurant { public ObjectId Id { get; set; } [] public string Name { get; set; } [] public string Cuisine { get; set; } }
Limite
Para especificar o número máximo de documentos retornados de uma operação de leitura, use o método Limit() fornecido pela interface IFindFluent. Depois de chamar o método Find(), encadeie o método Limit() para modificar o comportamento da operação.
O exemplo a seguir encontra todos os restaurantes que têm um cuisine valor de campo de "Italian" e limita os resultados a 5 documentos:
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var results = collection.Find(filter).Limit(5).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
V & T Restaurant Mimis Restaurant & Bar Venice Restaurant Areo Restaurant Tre Giovani Pizza & Pasta
Dica
O exemplo anterior retorna os cinco primeiros documentos correspondidos pela query de acordo com sua ordem natural no banco de banco de dados. A seção a seguir descreve como devolver os documentos em uma ordem especificada.
Sort
Para retornar documentos em uma ordem especificada, use o método Sort() fornecido pela interface IFindFluent. Depois de chamar o método Find(), encadeie o método Sort() para modificar o comportamento da operação.
Ao chamar Sort(), você deve passar a definição de classificação como um parâmetro. Você pode construir uma definição de classificação utilizando o método Builders<T>.Sort.Ascending() para classificar valores do mais baixo para o mais alto, ou o método Builders<T>.Sort.Ascending() para classificá-los do mais alto para o mais baixo. Ambos os métodos usam o nome do campo para classificar como parâmetro. Esses métodos podem ser encadeados para classificar documentos retornados por vários campos.
O exemplo a seguir retorna todos os documentos que têm um valor de campo cuisine de "Italian", classificados em ordem crescente de valores de campo name:
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var sort = Builders<Restaurant>.Sort.Ascending("name"); var results = collection.Find(filter).Sort(sort).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
(Lewis Drug Store) Locanda Vini E Olii 101 Restaurant And Bar 44 Sw Ristorante & Bar 900 Park A Voce ...
Ignorar
Para ignorar um número especificado de documentos antes de retornar os resultados da query, use o método Skip() fornecido pela interface do IFindFluent. Depois de chamar o método Find(), encadeie o método Skip() para modificar o comportamento da operação.
O exemplo a seguir retorna todos os documentos que têm um valor de campo cuisine de "Italian" e ignora os primeiros 10 documentos:
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var results = collection.Find(filter).Skip(10).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
Trattoria Alba Da Umberto Restaurant La Strada Restaurant Pasta Lovers Trattoria Nanni Restaurant Villa Mosconi Restaurant Villa Berulia Marco Polo Ristorante Cafe Luna Baraonda
Combinar Limite, Classificar e Ignorar
Você pode encadear os métodos Limit(), Sort() e Skip() a uma única chamada de método Find(). Isso permite que você defina um número máximo de documentos classificados para retornar da operação de leitura, ignorando um número específico de documentos antes de retornar.
O exemplo a seguir retorna 5 documentos com um valor cuisine de "Italian". Os resultados são classificados em ordem crescente pelo valor do campo name, ignorando os primeiros 10 documentos:
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var sort = Builders<Restaurant>.Sort.Ascending("name"); var results = collection.Find(filter).Limit(10).Sort(sort).Skip(10).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
Acqua Acqua Restaurant Acqua Santa Acquista Trattoria Acquolina Catering Adriatic Restaurant Pizzeria Bar Adrienne'S Pizza Bar Ai Fiori Aita Restaurant Al Di La
Observação
A ordem em que você chama esses métodos não altera os documentos que são devolvidos. O driver .NET/C# reordena automaticamente as chamadas para executar primeiro a operação de classificação, a operação de ignorar em seguida e, em seguida, a operação de limite.
Informações adicionais
Para obter mais informações sobre a recuperação de documentos, consulte o guia Recuperar dados .
Para obter mais informações sobre como especificar uma query, consulte o guia Criar um filtro de query.
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: