Overview
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.
Datos de muestra
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.
Buscar documentos
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.
Encuentra varios documentos
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()
Encuentre un documento
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.
Modificar el comportamiento de búsqueda
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 |
|---|---|
| Explains the execution plan for this operation with the specified verbosity level. Parameter Type: ExplainVerbosity |
| Sets the collation to use for the operation. The default value is the collation
specified for the collection. Parameter Type: Collation |
| Attaches a comment to the operation. Parameter Type: String |
| 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. |
| Sets the maximum number of documents the operation can return. Parameter Type: Int |
| Sets the number of documents to skip before returning results. Parameter Type: Int |
| 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.
Información Adicional
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.
Documentación de la API
Para obtener más información sobre cualquiera de los métodos analizados en esta guía, consulte la siguiente documentación de API: