Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Buscar documentos

En esta guía, aprenderá a usar el controlador Ruby para recuperar datos de una colección de MongoDB mediante operaciones de lectura. Puede llamar al find método en una colección para recuperar los documentos que cumplan un conjunto de criterios.

Los ejemplos de esta guía usan la colección companies en la base de datos sample_training de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación Ruby, cree un objeto Mongo::Client que se conecte a un clúster Atlas y asigne los siguientes valores a las 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 acerca de los filtros de query, consulte la Guía 'Especificar una query' .

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)

Al llamar al método each en el objeto Mongo::Collection::View que representa la consulta, el controlador devuelve un objeto Mongo::Cursor. Un cursor es un mecanismo que permite a una aplicación iterar sobre los resultados de la base de datos, manteniendo solo un subconjunto de ellos en memoria en un momento dado. Los cursores son útiles cuando el 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 consulta:

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 consulta coincide con más de un documento, el first método 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.

Puede 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

The number of documents to return per batch. The default value is 101.
Type: Integer

collation

The collation to use for the operation. The default value is the collation specified for the collection.
Type: Hash

comment

The comment to attach to the operation.
Type: Object

limit

The maximum number of documents the operation can return.
Type: Integer

skip

The number of documents to skip before returning results.
Type: Integer

sort

The order in which the operation returns matching documents.
Type: Hash

El siguiente ejemplo utiliza el método find para buscar todos los documentos cuyo campo number_of_employees tenga 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 mediante el controlador Ruby, consulte Consultar documentos.

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

Volver

Especifica un query

En esta página