Retrieve Data
Nesta página
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 find()
método 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
collection
e:
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 find()
método. 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 FindObservable
classe também fornece métodos adicionais que você pode encadear a uma FindObservable
instância para modificar seu comportamento,first()
como.
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 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 |
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 FindObservable
métodos de nós, 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 do MongoDB.
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: