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
/ /

Retrieve Data

En esta guía, aprenderá a usar el controlador de Scala 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 tu aplicación Scala, crea un MongoClient que se conecte a un clúster de Atlas y asigna el siguiente valor a tus variables database y collection:

val database: MongoDatabase = mongoClient.getDatabase("sample_training")
val collection: MongoCollection[Document] = database.getCollection("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 filtro de query y devuelve una instancia de la clase FindObservable desde la cual puedes acceder a los resultados de la query. La clase FindObservable también proporciona métodos adicionales que puedes encadenar a una instancia de FindObservable para modificar su comportamiento, como first().

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 método find() devuelve una instancia de FindObservable, que se puede iterar para ver los documentos coincidentes. Utilice el método subscribe() para recorrer la FindObservable.

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

val filter = equal("founded_year", 1970)
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id":{"$oid":"..."},"name":"Mitsubishi Motors","permalink":"mitsubishi-motors",
"crunchbase_url":"http://www.crunchbase.com/company/mitsubishi-motors",
... }
{"_id":{"$oid":"..."},"name":"Western Digital","permalink":"western-digital",
"crunchbase_url":"http://www.crunchbase.com/company/western-digital",
... }
{"_id":{"$oid":"..."},"name":"Celarayn","permalink":"celarayn","crunchbase_url":
"http://www.crunchbase.com/company/celarayn",
... }

Nota

Encuentre todos los documentos

Para buscar todos los documentos en una colección, llamá al método find() sin pasar ningún parámetro:

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().

El método find() devuelve una instancia de FindObservable y el método first() devuelve una instancia de SingleObserver que contiene el primer resultado de query almacenado por el FindObservable. Puede acceder al resultado SingleObserver llamando al método subscribe().

El siguiente ejemplo utiliza los métodos find() y first() para buscar el primer documento en el que el campo name tiene el valor "LinkedIn":

val filter = equal("name", "LinkedIn")
collection.find(filter).first().subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": {"$oid": "..."}, "name": "LinkedIn", "permalink": "linkedin", "crunchbase_url":
"http://www.crunchbase.com/company/linkedin", "homepage_url": "http://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 modificar el comportamiento del método find() encadenando los métodos proporcionados por la clase FindObservable. La siguiente tabla describe algunos de estos métodos:

Método
Descripción

explain()

Explains the execution plan for this operation with the specified verbosity level.
Parameter Type: ExplainVerbosity

collation()

Sets the collation to use for the operation. The default value is the collation specified for the collection.
Parameter Type: Collation

comment()

Attaches a comment to the operation.
Parameter Type: String

first()

Returns an Observable that stores only the first query result. To view an example that uses this method, see Find One Document on this page.

limit()

Sets the maximum number of documents the operation can return.
Parameter Type: Int

skip()

Sets the number of documents to skip before returning results.
Parameter Type: Int

sort()

Sets the order in which the operation returns matching documents.
Parameter Type: Bson

El siguiente ejemplo utiliza el método find() para encontrar todos los documentos en los que el campo number_of_employees tiene el valor 1000. El ejemplo usa el método limit() para devolver un máximo de 5 resultados:

val filter = equal("number_of_employees", 1000)
collection.find(filter).limit(5).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": {"$oid": "..."}, "name": "Akamai Technologies", "permalink": "akamai-technologies",
"crunchbase_url": "http://www.crunchbase.com/company/akamai-technologies", "homepage_url":
"http://www.akamai.com", ... }
{"_id": {"$oid": "..."}, "name": "Yodle", "permalink": "yodle", "crunchbase_url":
"http://www.crunchbase.com/company/yodle", "homepage_url": "http://www.yodle.com", ... }
{"_id": {"$oid": "..."}, "name": "Antal International", "permalink": "antal-international",
"crunchbase_url": "http://www.crunchbase.com/company/antal-international", "homepage_url":
"http://antal.com", ... }
{"_id": {"$oid": "..."}, "name": "Yatra online", "permalink": "yatra-online", "crunchbase_url":
"http://www.crunchbase.com/company/yatra-online", "homepage_url": "http://www.Yatra.com", ... }
{"_id": {"$oid": "..."}, "name": "Gumtree", "permalink": "gumtree", "crunchbase_url":
"http://www.crunchbase.com/company/gumtree", "homepage_url": "http://www.gumtree.co.za", ... }

Para obtener una lista completa de los métodos de nodos de FindObservable, consulta la documentación de la API para la clase FindObservable.

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 usando el controlador Scala, consulte Leer datos.

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

  • find()

  • first()

  • limit()

Volver

Leer datos

En esta página