Overview
En esta guía, puede aprender a especificar qué documentos devolver de una operación de lectura encadenando los siguientes métodos a la Find()
:
Límite(): especifica el número máximo de documentos que se devolverán de una consulta
Sort(): especifica el orden de clasificación de los documentos devueltos
Skip(): especifica la cantidad de documentos que se deben omitir antes de devolver los resultados de la consulta
Datos de muestra
Los ejemplos en esta guía utilizan la colección restaurants en la base de datos sample_restaurants 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 la guía MongoDB Primeros Pasos.
Los ejemplos de esta página utilizan la siguiente clase Restaurant como modelo para los documentos de la colección:
[] public class Restaurant { public ObjectId Id { get; set; } [] public string Name { get; set; } [] public string Cuisine { get; set; } }
Limit
Para especificar el número máximo de documentos devueltos en una operación de lectura, utilice el método Limit() proporcionado por la interfaz IFindFluent. Después de llamar al método Find(), encadene el método Limit() para modificar el comportamiento de la operación.
El siguiente ejemplo encuentra todos los restaurantes que tienen un valor de campo cuisine de "Italian" y limita los 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
Tip
El ejemplo anterior devuelve los primeros cinco documentos que coinciden con la consulta según su orden natural en la base de datos. La siguiente sección describe cómo devolver los documentos en un orden específico.
Sort
Para devolver los documentos en un orden específico, utilice el método Sort() proporcionado por la interfaz IFindFluent. Después de llamar al método Find(), encadene el método Sort() para modificar el comportamiento de la operación.
Al llamar a Sort(), debe pasar la definición de ordenación como parámetro. Puede construir una definición de ordenación usando el método Builders<T>.Sort.Ascending() para ordenar los valores de menor a mayor, o el método Builders<T>.Sort.Ascending() para ordenarlos de mayor a menor. Ambos métodos toman como parámetro el nombre del campo por el que se ordenará. Estos métodos se pueden encadenar para ordenar los documentos devueltos por varios campos.
El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo cuisine de "Italian", ordenados en orden ascendente 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 ...
Omitir
Para omitir un número específico de documentos antes de devolver los resultados de la consulta, utilice el método Skip() proporcionado por la interfaz IFindFluent. Después de llamar al método Find(), encadene el método Skip() para modificar el comportamiento de la operación.
El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo cuisine de "Italian" y omite los primeros 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 límite, ordenar y omitir
Puede encadenar los métodos Limit(), Sort() y Skip() a una sola llamada al método Find(). Esto le permite establecer un número máximo de documentos ordenados que se devolverán de la operación de lectura, omitiendo un número específico de documentos antes de devolverlos.
El siguiente ejemplo devuelve 5 documentos cuyo valor cuisine es "Italian". Los resultados se ordenan en orden ascendente según el valor del campo name, omitiendo los primeros 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
Nota
El orden en que se llaman estos métodos no modifica los documentos devueltos. El controlador .NET/C# reordena automáticamente las llamadas para realizar primero la operación de ordenación, después la de omisión y, finalmente, la de límite.
Información Adicional
Para obtener más información sobre cómo recuperar documentos, consulte la Guíade recuperación de datos.
Para obtener más información sobre cómo especificar una consulta, consulte la guía Crear un filtro de consulta.
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: