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 documentos que coinciden con un conjunto de criterios.

Los ejemplos de esta guía utilizan 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 Scala, cree un MongoClient que se conecte a un clúster de Atlas y asigne el siguiente valor a database las collection variables y:

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 muestra, consulte la guía de introducción a MongoDB.

Para recuperar documentos de una colección, utilice el find() método. Este método toma un parámetro de filtro de consulta y devuelve una instancia de la FindObservable clase desde la que puede acceder a los resultados de la consulta. La FindObservable clase también proporciona métodos adicionales que puede encadenar a una FindObservable instancia para modificar su comportamiento,first() como.

Tip

Para obtener más información sobre los filtros de consulta, consulte la Especifique una guía de 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 método find() devuelve una instancia de FindObservable, que puede iterar para ver los documentos coincidentes. Utilice el método subscribe() para iterar a través de 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 encontrar todos los documentos en una colección, llame al método find() sin pasar ningún parámetro:

collection.find()

Para buscar un solo documento en una colección, llame al método find() y pase un filtro de consulta que especifique los criterios del documento que desea encontrar. Luego, encadene el método first() a find().

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

El siguiente ejemplo utiliza los métodos find() y first() para encontrar 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 buscar todos los documentos cuyo campo number_of_employees tenga el valor 1000. El ejemplo utiliza 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 FindObservable métodos miembro, consulte la documentación de la API de la clase FindObservable.

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

Para ver ejemplos de código que recuperan documentos mediante el controlador Scala, consulte Leer datos.

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

  • find()

  • primero()

  • limit()

Volver

Leer datos

En esta página