Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Retrieve Data

En esta guía, se puede aprender a usar el controlador de MongoDB .NET/C# para recuperar datos de una colección de MongoDB mediante operaciones de lectura. Se puede llamar al método Find() para recuperar documentos que coincidan con un conjunto de criterios.

Tip

Interactive Lab

Esta página incluye un breve laboratorio interactivo que demuestra cómo recuperar datos usando el método Find(). Se puede completar este laboratorio directamente en la ventana del navegador sin instalar MongoDB o un editor de código.

Para iniciar el laboratorio, haga clic en el botón Open Interactive Tutorial en la parte superior de la página. Para ampliar el laboratorio a un formato de pantalla completa, haga clic en el botón de pantalla completa () en la esquina superior derecha del panel del laboratorio.

Los ejemplos en esta guía utilizan la colección sample_restaurants.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, consulte Introducción al driver .NET/C#.

En los ejemplos de esta página se utilizan las siguientes clases Restaurant, Address y GradeEntry como modelos:

public class Restaurant
{
public ObjectId Id { get; set; }
public string Name { get; set; }
[BsonElement("restaurant_id")]
public string RestaurantId { get; set; }
public string Cuisine { get; set; }
public Address Address { get; set; }
public string Borough { get; set; }
public List<GradeEntry> Grades { get; set; }
}
public class Address
{
public string Building { get; set; }
[BsonElement("coord")]
public double[] Coordinates { get; set; }
public string Street { get; set; }
[BsonElement("zipcode")]
public string ZipCode { get; set; }
}
public class GradeEntry
{
public DateTime Date { get; set; }
public string Grade { get; set; }
public float? Score { get; set; }
}

Nota

Los documentos de la colección restaurants utilizan la convención de nomenclatura snake-case. Los ejemplos de esta guía utilizan un ConventionPack para deserializar los campos de la colección en notación Pascal y asignarlos a las propiedades de la clase Restaurant.

Para aprender más sobre la serialización personalizada, consultar Serialización personalizada.

Utiliza el método Find() para recuperar documentos de una colección. El método Find() toma un filtro de query y devuelve todos los documentos que coinciden. Un filtro de query es un objeto que especifica los documentos que deseas recuperar en tu query.

Para aprender más sobre los filtros de query, consulte Crear un filtro de query.

Para buscar un solo documento en una colección, pasa un filtro de query que especifique los criterios del documento que deseas buscar y, a continuación, encadena el método FirstOrDefault() o FirstOrDefaultAsync(). Si más de un documento coincide con el filtro de query, estos métodos devuelven el primer documento coincidente de los resultados recuperados. Si ningún documento coincide con el filtro de query, los métodos devuelven null.

var restaurants = _restaurantsCollection.Find(filter).FirstOrDefault();
var restaurants = await _restaurantsCollection.Find(filter).FirstOrDefaultAsync();

Tip

Primer documento

El método FirstOrDefault() devuelve el primer documento en orden natural en el disco si no se especifica ningún criterio de ordenación.

Para ver un ejemplo completo de cómo usar el método Find() para encontrar un único documento, consulta la Información adicional.

Para encontrar varios documentos en una colección, pasar un filtro de query al método Find() que especifique los criterios de los documentos que desea recuperar.

Se puede utilizar un cursor para iterar sobre los documentos devueltos por el método Find(). Un cursor es un mecanismo que permite a una aplicación iterar sobre los resultados de una base de datos mientras mantiene solo un subconjunto de ellos en la memoria en un momento dado. Los cursores son útiles cuando el método Find() devuelve una gran cantidad de documentos.

Si deseas utilizar un cursor para iterar sobre los documentos, pasa un filtro de query al método Find() que especifique los criterios de los documentos que quieras buscar y, a continuación, encadena el método ToCursor() o ToCursorAsync(). Para ver un ejemplo sincrónico o asincrónico, selecciona la pestaña correspondiente.

var restaurants = _restaurantsCollection.Find(filter).ToCursor();
var restaurants = await _restaurantsCollection.Find(filter).ToCursorAsync();

Si devuelves un pequeño número de documentos o necesitas que se devuelvan los resultados como un objeto List, utiliza los métodos ToList() o ToListAsync().

Para encontrar varios documentos en una colección y mantenerlos en la memoria como una lista, pasa un filtro de query al método Find() que especifique los criterios de los documentos que quieras encontrar y, a continuación, encadena el método ToList() o ToListAsync(). Para ver un ejemplo sincrónico o asincrónico, selecciona la pestaña correspondiente.

var restaurants = _restaurantsCollection.Find(filter).ToList();
var restaurants = await _restaurantsCollection.Find(filter).ToListAsync();

Para ver un ejemplo completo de cómo usar el método Find() para encontrar varios documentos, consulta la Información adicional.

Nota

Encuentre todos los documentos

Para encontrar todos los documentos en una colección, pasa un filtro vacío al método Find().

var filter = Builders<Restaurant>.Filter.Empty;
var allRestaurants = _restaurantsCollection.Find(filter);

Para ver un ejemplo completamente ejecutable del uso del método Find() para encontrar todos los documentos, consulta Información adicional.

Puedes modificar el comportamiento del método Find() pasando un objeto FindOptions.

Puedes configurar las opciones de uso común con los siguientes métodos:

Método
Descripción

BatchSize

Obtiene o establece el número máximo de documentos dentro de cada lote devuelto en el resultado de una consulta. Si no se establece batchSize, el método Find() tiene un tamaño de lote inicial de 101 documentos y un tamaño máximo de 16 mebibytes (MiB) para cada lote subsiguiente. Esta opción puede imponer un límite menor que 16 MiB, pero no uno mayor. Si establece batchSize en un límite que da como resultado lotes mayores que 16 MiB, esta opción no tiene efecto y el método Find() utiliza el tamaño de lote predeterminado.

Collation

Establece las opciones de intercalación. Consulte la sección Intercalación de esta página para obtener más información.

Comment

Añade un comentario a la consulta para facilitar la búsqueda en los registros del generador de perfiles.

Hint

Establece la sugerencia sobre qué índice utilizar.

MaxTime

Establece el tiempo máximo de ejecución en el servidor para esta operación.

Para ver una lista completa de las opciones disponibles, consulta Propiedades de FindOptions.

Para configurar la intercalación para tu operación, crea una instancia de la clase intercalación.

La siguiente tabla describe los parámetros que acepta el constructor Collation. También enumera la propiedad de clase correspondiente que se puede usar para leer el valor de cada configuración.

Parameter
Descripción
Propiedad de clase

locale

Especifica la configuración regional de Componentes Internacionales para Unicode (ICU). Para obtener una lista de las configuraciones regionales compatibles, consulte Configuraciones regionales de intercalación y parámetros predeterminados en el Manual del servidor MongoDB.

Si desea utilizar una comparación binaria simple, utilice la Collation.Simple propiedad estática para devolver un Collation objeto con establecido locale "simple"en.
Tipo de datos: string

Locale

caseLevel

(Opcional) Especifica si se debe incluir la comparación de mayúsculas y minúsculas.

Cuando este argumento true es, el comportamiento del controlador depende del valor del strength argumento:

- Si strength CollationStrength.Primaryes, el controlador compara caracteres base y mayúsculas y minúsculas.
- Si strength CollationStrength.Secondaryes, el controlador compara caracteres base, diacríticos, otras diferencias secundarias y mayúsculas y minúsculas.
- Si strength es cualquier otro valor, este argumento se ignora.

Cuando este argumento false es, el controlador no incluye la comparación de mayúsculas y minúsculas en el nivel Primary de fuerza Secondary o.

Tipo boolean
de datos: Predeterminado: false

CaseLevel

caseFirst

(Opcional) Especifica el orden de clasificación de las diferencias de mayúsculas y minúsculas durante las comparaciones de nivel terciario.

Tipo de datos: CollationCaseFirst
Valor predeterminado: CollationCaseFirst.Off

CaseFirst

strength

(Opcional) Especifica el nivel de comparación a realizar, tal como se define en la documentación de la UCI.

Tipo de datos: CollationStrength
Valor predeterminado: CollationStrength.Tertiary

Strength

numericOrdering

(Opcional) Especifica si el controlador compara las cadenas numéricas como números.

Si este argumento true es, el controlador compara las cadenas numéricas como números. Por ejemplo, al comparar las cadenas "10" y "2", el controlador trata los valores como 10 2y, y encuentra 10 que es mayor.

Si este argumento es false o se excluye, el controlador compara las cadenas numéricas como cadenas. Por ejemplo, al comparar las cadenas "10" y "2", el controlador compara un carácter a la vez. Como "1" es menor que "2", el controlador encuentra10que " " es menor que "2".

Para obtener más información, consulte Restricciones de intercalación en el manual del servidor MongoDB.

Tipo de datos: boolean
Predeterminado: false

NumericOrdering

alternate

(Opcional) Especifica si el controlador considera los espacios en blanco y la puntuación como caracteres base para fines de comparación.

Tipo de datos: CollationAlternate
Valor predeterminado: CollationAlternate.NonIgnorable (los espacios y la puntuación se consideran caracteres base)

Alternate

maxVariable

(Opcional) Especifica qué caracteres considera el controlador como ignorables cuando el alternate argumento CollationAlternate.Shifted es.

Tipo de datos: CollationMaxVariable
Valor predeterminado: CollationMaxVariable.Punctuation (el controlador ignora la puntuación y los espacios)

MaxVariable

normalization

(Opcional) Especifica si el controlador normaliza el texto según sea necesario.

La mayoría del texto no requiere normalización. Para obtener más información sobre la normalización, consulte la documentación de ICU.

Tipo de datos: boolean
Predeterminado: false

Normalization

backwards

(Opcional) Especifica si las cadenas que contienen diacríticos se ordenan desde el final de la cadena hacia el principio.

Tipo de datos: boolean
Valor predeterminado: false

Backwards

Más información sobre la intercalación en la página Intercalación en el manual de MongoDB Server.

Este ejemplo realiza las siguientes acciones:

  • Busca todos los documentos que contengan “Pizza” en el campo cuisine

  • Establece el BatchSize en 3

  • Almacena los resultados en un cursor

  • Imprime los documentos a los que hace referencia el cursor

var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Pizza");
var findOptions = new FindOptions { BatchSize = 3 };
using (var cursor = _restaurantsCollection.Find(filter, findOptions).ToCursor())
{
foreach (var r in cursor.ToEnumerable())
{
WriteLine(r.Name);
}
}
Pizza Town
Victoria Pizza
...

Tip

Optimización

Crea un cursor con una instrucción using para invocar automáticamente el método Dispose() una vez que el cursor ya no esté en uso.

Para aprender más sobre los filtros de query, consulte Crear un filtro de query.

Para aprender a especificar las query usando LINQ, mira la sintaxis de LINQ para operaciones de agregación.

Para ejemplos ejecutables de las operaciones de búsqueda, consulta los siguientes ejemplos de uso:

Para obtener más información sobre cualquiera de los métodos o tipos discutidos en esta guía, consultar la siguiente documentación de la API: