Visão geral
Neste guia, você pode aprender como usar o driver Scala para recuperar dados de uma coleção MongoDB usando operações de leitura. Você pode chamar o método find() em uma coleção para recuperar documentos que correspondam a um conjunto de critérios.
Dados de amostra
Os exemplos neste guia utilizam a companies coleção do sample_training no banco de dados do a partir dos conjuntos de dados de amostra do Atlas . Para acessar essa collection a partir do seu aplicação Scala, crie um MongoClient que se conecte a um Atlas cluster e atribua o seguinte valor às suas variáveis database e collection:
val database: MongoDatabase = mongoClient.getDatabase("sample_training") val collection: MongoCollection[Document] = database.getCollection("companies") 
Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Encontrar documentos
Para recuperar documentos de uma coleção, use o método find(). Este método utiliza um parâmetro de filtro de consulta e retorna uma instância da FindObservable classe da qual você pode acessar os resultados da consulta. A classe FindObservable também fornece métodos adicionais que você pode encadear a uma instância FindObservable para modificar seu comportamento, como first().
Dica
Para saber mais sobre filtros de query, consulte o guia Especificar uma query .
Localizar vários documentos
Para encontrar vários documentos em uma coleção, passe um filtro de queries para o método find() que especifica os critérios dos documentos que você deseja recuperar.
O método find() retorna uma instância de FindObservable, que você pode iterar para ver os documentos correspondentes. Use o método subscribe() para iterar pelo FindObservable.
O exemplo a seguir usa o método find() para localizar todos os documentos nos quais o campo founded_year tem o valor 1970 e imprime os 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", ... } 
Observação
Localizar todos os documentos
Para localizar todos os documentos em uma coleção, chame o método find() sem passar nenhum parâmetro:
collection.find() 
Encontrar um documento
Para localizar um único documento em uma coleção, chame o método find() e passe um filtro de query que especifique os critérios do documento que você deseja localizar. Em seguida, encadeie o método first() a find().
O método find() retorna uma instância FindObservable e o método first() retorna uma instância SingleObserver que contém o primeiro resultado da query armazenado pelo FindObservable. Você pode acessar o resultado SingleObserver chamando o método subscribe().
O exemplo a seguir usa os métodos find() e first() para localizar o primeiro documento no qual o campo name tem o 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", ...} 
Dica
Ordem de classificação
O método first() retorna o primeiro documento em ordem natural no disco se nenhum critério de classificação for especificado.
Modificar comportamento de localização
Você pode modificar o comportamento do método find() encadeando métodos fornecidos pela classe FindObservable . A tabela a seguir descreve alguns desses métodos:
| Método | Descrição | 
|---|---|
| 
 | 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  Observablethat 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 | 
O exemplo seguinte utiliza o método find() para localizar todos os documentos nos quais o campo number_of_employees tem o valor 1000. O exemplo utiliza o método limit() para retornar um 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 obter uma lista completa dos métodos de nós FindObservable, consulte a documentação da API da classe FindObservable.
Informações adicionais
Para saber mais sobre filtros de query, consulte o guia Especificar uma query .
Para exibir exemplos de código que recuperam documentos usando o driver Scala, consulte Ler dados.
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: