Menu Docs
Página inicial do Docs
/ / /
Scala
/

Retrieve Data

Nesta página

  • Visão geral
  • Dados de amostra
  • Encontrar documentos
  • Localizar vários documentos
  • Encontrar um documento
  • Modificar comportamento de localização
  • Informações adicionais
  • Documentação da API

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.

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 .

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 .

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

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.

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

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

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.

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.

Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API:

  • find()

  • first()

  • limit()

Voltar

Ler dados