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.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Buscar documentos

En esta guía, puedes aprender cómo usar el controlador Ruby para recuperar datos de una colección de MongoDB utilizando operaciones de lectura. Se puede llamar al método find en una colección para recuperar documentos que coincidan con un conjunto de criterios.

Los ejemplos de esta guía utilizan la colección companies en la base de datos sample_training de los conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde tu aplicación Ruby, crea un objeto Mongo::Client que se conecte a un clúster de Atlas y asigna los siguientes valores a tus variables database y collection:

database = client.use('sample_training')
collection = database[:companies]

Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Get Started.

Para recuperar documentos de una colección, utiliza el método find. Este método toma un parámetro de filtro de query y retorna un objeto Mongo::Collection::View, que representa la query. El driver pospone la ejecución de la query hasta que se obtienen los resultados utilizando métodos como first o each. Después de que solicites los resultados, el controlador envía la query al servidor y devuelve un objeto Mongo::Cursor desde el que puedes acceder a los resultados.

Puedes encadenar métodos de opción al método find para refinar los resultados de la operación.

Tip

Para obtener más información sobre los filtros de query, consulta la guía Especificar una consulta.

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.

El siguiente ejemplo utiliza el método find para encontrar todos los documentos en los que el campo founded_year tiene el valor 1970:

results = collection.find(founded_year: 1970)

Cuando llamas al método each en el objeto Mongo::Collection::View que representa la query, el driver devuelve un objeto Mongo::Cursor. Un cursor es un mecanismo que permite que una aplicación itere sobre los resultados de la base de datos mientras retiene sólo un subconjunto de ellos en memoria en un momento dado. Los cursores son útiles cuando tu método find devuelve una gran cantidad de documentos.

El siguiente código llama al método each para iterar sobre los resultados de la query:

results.each do |doc|
puts doc
end
{"_id"=>BSON::ObjectId('...'), "name"=>"Mitsubishi Motors", "permalink"=>"mitsubishi-motors",
"crunchbase_url"=>"http://www.crunchbase.com/company/mitsubishi-motors",
"homepage_url"=>"http://www.mitsubishi-motors.com", ...}
{"_id"=>BSON::ObjectId('...'), "name"=>"Western Digital", "permalink"=>"western-digital",
"crunchbase_url"=>"http://www.crunchbase.com/company/western-digital",
"homepage_url"=>"http://www.wdc.com/en", ...}
{"_id"=>BSON::ObjectId('...'), "name"=>"Celarayn", "permalink"=>"celarayn",
"crunchbase_url"=>"http://www.crunchbase.com/company/celarayn",
"homepage_url"=>"http://www.celarayn.es", ...}

Nota

Encuentre todos los documentos

Para encontrar todos los documentos en una colección, llama al método find sin pasar un filtro de query:

results = collection.find

Para encontrar un único documento en una colección, llama al método find y pasa un filtro de query que especifique los criterios del documento que deseas encontrar. Después, encadena el método first con find.

Si el filtro de query coincide con más de un documento, el método first recupera el primer documento coincidente de los resultados de la operación.

En el siguiente ejemplo, se encadena el método first a find para encontrar el primer documento en el que el campo name tiene el valor 'LinkedIn':

document = collection.find(name: 'LinkedIn').first
puts document
{"_id"=>BSON::ObjectId('...'), "name"=>"LinkedIn", "permalink"=>"linkedin",
"crunchbase_url"=>"http://www.crunchbase.com/company/linkedin",
"homepage_url"=>"http://linkedin.com", "blog_url"=>"http://blog.linkedin.com",
...}

Tip

Orden de clasificación

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

Puedes encadenar métodos de opción al método find para modificar los resultados de la operación. La siguiente tabla describe algunas de estas opciones:

Opción
Descripción

batch_size

Número de documentos a devolver por lote. El valor predeterminado 101 es.
Tipo: Integer

collation

La intercalación que se utilizará para la operación. El valor predeterminado es la intercalación especificada para la colección.
Tipo: Hash

comment

Comentario para adjuntar a la operación.
Tipo: Object

limit

Número máximo de documentos que puede devolver la operación.
Tipo: Integer

skip

Número de documentos que se deben omitir antes de devolver resultados.
Tipo: Integer

sort

El orden en que la operación devuelve los documentos coincidentes.
Tipo: Hash

El siguiente ejemplo usa el método find para encontrar todos los documentos en los que el campo number_of_employees tiene el valor 1000. El ejemplo utiliza la opción limit para devolver un máximo de 2 resultados:

limit_results = collection.find(number_of_employees: 1000).limit(2)
limit_results.each do |doc|
puts doc
end
{"_id"=>BSON::ObjectId('...'), "name"=>"Akamai Technologies", "permalink"=>"akamai-technologies",
"crunchbase_url"=>"http://www.crunchbase.com/company/akamai-technologies",
"homepage_url"=>"http://www.akamai.com", ...}
{"_id"=>BSON::ObjectId('...'), "name"=>"Yodle", "permalink"=>"yodle",
"crunchbase_url"=>"http://www.crunchbase.com/company/yodle",
"homepage_url"=>"http://www.yodle.com", ...}

Para obtener una lista completa de opciones, consulta la documentación de la API del método find.

Para obtener más información sobre los filtros de query, consulta la guía Especificar una consulta.

Para ver ejemplos de código que recuperan documentos utilizando el controlador Ruby, consulta Query Documents.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: