Ler dados do MongoDB
Nesta página
Visão geral
Nesta página, você pode ver exemplos de código copiáveis que mostram métodos comuns de driver Scala que você pode usar para ler dados do MongoDB.
Dica
Para saber mais sobre qualquer um dos métodos mostrados nesta página, consulte o link fornecido em cada seção.
Para usar um exemplo desta página, copie o exemplo de código para oaplicativo de amostra ou para seu próprio aplicativo. Certifique-se de substituir todos os espaços reservados nos exemplos de código, como <connection string URI>
, pelos valores relevantes para sua implantação do MongoDB.
Aplicativo de amostra
Aplicativo de amostra
Você pode usar o seguinte aplicativo de exemplo para testar os exemplos de código nesta página. Para usar o aplicativo de amostra, execute as seguintes etapas:
Verifique se você tem o driver Scala instalado em seu projeto Maven ou sbt.
Copie o seguinte código e cole-o em um novo arquivo
.scala
.Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.
1 import org.mongodb.scala._ 2 import org.mongodb.scala.bson.Document 3 import org.mongodb.scala.model.Filters._ 4 import org.mongodb.scala.model.changestream._ 5 6 object SampleReadApp { 7 8 def main(args: Array[String]): Unit = { 9 val mongoClient = MongoClient("<connection string URI>") 10 val database: MongoDatabase = mongoClient.getDatabase("<database name>") 11 val collection: MongoCollection[Document] = database.getCollection("<collection name>") 12 13 14 // Start example code here 15 16 // End example code here 17 18 // Wait for the operations to complete before closing client 19 // Note: This example uses Thread.sleep() for brevity and does not guarantee all 20 // operations will be completed in time 21 Thread.sleep(1000) 22 mongoClient.close() 23 } 24 }
encontrar um
O exemplo a seguir recupera um documento que corresponde aos critérios especificados pelo filtro fornecido:
val filter = equal("<field>", "<value>") collection.find(filter).first().subscribe((doc: Document) => println(doc.toJson()), (e: Throwable) => println(s"There was an error: $e"))
Para saber mais sobre o first()
método, consulte o guia Recuperar dados.
Encontrar vários
O exemplo a seguir recupera todos os documentos que correspondem aos critérios especificados pelo filtro fornecido:
val filter = equal("<field>", "<value>") collection.find(filter).subscribe((doc: Document) => println(doc.toJson()), (e: Throwable) => println(s"There was an error: $e"))
Para saber mais sobre o método find()
, consulte o guia Recuperar dados .
Contagem de documentos em uma coleção
O exemplo a seguir retorna o número de documentos na coleção especificada:
collection.countDocuments() .subscribe((count: Long) => println(s"Number of documents: $count"), (e: Throwable) => println(s"There was an error: $e"))
Para saber mais sobre o método countDocuments()
, consulte o guia Contagem de documentos .
Contagem de documentos retornados de uma query
O exemplo a seguir retorna o número de documentos na coleção especificada que correspondem aos critérios de consulta:
collection.countDocuments(equal("<field>", "<value>")) .subscribe((count: Long) => println(s"Number of documents: $count"), (e: Throwable) => println(s"There was an error: $e"))
Para saber mais sobre o método countDocuments()
, consulte o guia Contagem de documentos .
Contagem estimada de documentos
O exemplo a seguir retorna um número aproximado de documentos na collection especificada com base nos metadados da collection:
collection.estimatedDocumentCount() .subscribe((count: Long) => println(s"Estimated number of documents: $count"), (e: Throwable) => println(s"There was an error: $e"))
Para saber mais sobre o método estimatedDocumentCount()
, consulte o guia Contagem de documentos .
Retrieve Distinct Values
O exemplo a seguir retorna todos os valores distintos do nome do campo especificado em uma determinada coleção:
collection.distinct("<field>") .subscribe((value: String) => println(value), (e: Throwable) => println(s"There was an error: $e"))
Para saber mais sobre o método distinct()
, consulte o guia Retrieve Distinct Field Values (Recuperar valores de campos distintos).
Monitorar alterações de dados
O exemplo a seguir cria um change stream para uma determinada collection e imprime eventos de alteração subsequentes nessa collection:
val changeStreamObservable = collection.watch() changeStreamObservable.subscribe( (changeEvent: ChangeStreamDocument[Document]) => { println(s"Received a change to the collection: ${changeEvent}") }, (e: Throwable) => { println(s"Encountered an error: ${e.getMessage}") }, () => println("Completed") )
Para saber mais sobre o método watch()
, consulte o guia Monitorar alterações de dados .