Especifique documentos a serem devolvidos
Nesta página
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 Especificar uma 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: