Visão geral
Este guia é semelhante aoGuia de início rápido  , mas usa classes de caso para modelar documentos em vez da classe genérica Document .
Os exemplos de código neste guia vêm do QuickTourCaseClass.scala no repositório do Github do código fonte do driver.
Importante
Consulte a documentação de macros do BSON para obter informações sobre o uso de macros para configurar o suporte à classe de caso com sua instância MongoCollection .
Primeiro, crie a classe de caso que você deseja usar para representar os documentos na coleção. O seguinte código cria uma classe de caso Person e um objeto complementar:
import org.mongodb.scala.bson.ObjectId object Person {   def apply(firstName: String, lastName: String): Person =     Person(new ObjectId(), firstName, lastName) } case class Person(_id: ObjectId, firstName: String, lastName: String) 
Observação
No objeto complementar, o método apply() pode atribuir automaticamente um valor _id ao criar novas instâncias que não incluam um. No MongoDB , o campo _id representa a chave primária de um documento, portanto, ao ter um campo _id na classe case, você permite o acesso à chave primária.
Configurar classes de caso
Ao usar Person com uma collection, deve haver um Codec que possa convertê-lo em e de BSON. O objeto complementar org.mongodb.scala.bson.codecs.Macros fornece macros que podem gerar automaticamente um codec para classes de caso no momento da compilação. O exemplo seguinte cria um novo CodecRegistry que inclui um codec para a classe de caso Person :
import org.mongodb.scala.bson.codecs.Macros._ import org.mongodb.scala.MongoClient.DEFAULT_CODEC_REGISTRY import org.bson.codecs.configuration.CodecRegistries.{fromRegistries, fromProviders} val codecRegistry = fromRegistries(fromProviders(classOf[Person]), DEFAULT_CODEC_REGISTRY ) 
Após o CodecRegistry ser configurado, a próxima etapa é criar um MongoCollection[Person]. O exemplo seguinte utiliza a test coleção do mydb banco de banco de dados :
val mongoClient: MongoClient = MongoClient() val database: MongoDatabase = mongoClient.getDatabase("mydb").withCodecRegistry(codecRegistry) val collection: MongoCollection[Person] = database.getCollection("test") 
Observação
O CodecRegistry pode ser definido ao criar um MongoClient, no nível do banco de dados ou no nível da collection. A API é flexível, permitindo diferentes instâncias CodecRegistry conforme necessário.
Inserir uma pessoa
Com o MongoCollection configurado corretamente, inserir Person instâncias na coleção é simples:
val person: Person = Person("Ada", "Lovelace") collection.insertOne(person).results() 
Inserir instâncias de várias pessoas
Para inserir múltiplas instâncias do Person , utilize o método insertMany() . O exemplo a seguir usa o printResults() implícito e bloqueia até que o observador seja concluído e então imprime cada resultado:
val people: Seq[Person] = Seq(   Person("Charles", "Babbage"),   Person("George", "Boole"),   Person("Gertrude", "Blanch"),   Person("Grace", "Hopper"),   Person("Ida", "Rhodes"),   Person("Jean", "Bartik"),   Person("John", "Backus"),   Person("Lucy", "Sanders"),   Person("Tim", "Berners Lee"),   Person("Zaphod", "Beeblebrox") ) collection.insertMany(people).printResults() 
Este código gera a seguinte mensagem:
The operation completed successfully 
Consultando a coleção
Utilize o método find() para consultar uma collection.
Encontre a primeira pessoa correspondente
A query da collection usa a mesma API usada no Início rápido:
collection.find().first().printHeadResult() 
O exemplo imprime o primeiro Person na coleção:
Person(58dd0a68218de22333435fa4, Ada, Lovelace) 
Retornar todos os documentos
Para recuperar todos os documentos na coleção, use o método find() . O método find() retorna uma instância do FindObservable que fornece uma interface fluente para encadear ou controlar operações de localização. Os usos a seguir imprimem todos os documentos na coleção como instâncias Person :
collection.find().printResults() 
Recuperar uma pessoa usando um filtro de query
Para retornar um subconjunto dos documentos em nossa coleção, passe um filtro para o método find() . Por exemplo, o seguinte exemplo retorna o primeiro Person cujo nome é "Ida":
import org.mongodb.scala.model.Filters._ collection.find(equal("firstName", "Ida")).first().printHeadResult() 
Este exemplo gera o seguinte resultado:
Person(58dd0a68218de22333435fa4, Ida, Rhodes) 
Dica
Você pode utilizar os auxiliares Filters, Sorts, Projections e Updates para habilitar maneiras simples e concisas de construir consultas.
Encontre instâncias de pessoa correspondentes
O filtro a seguir encontra todas as instâncias Person em que o firstName começa com "G", classificados por lastName:
collection.find(regex("firstName", "^G")).sort(ascending("lastName")).printResults() 
Este exemplo imprime as instâncias Person para "Gertrude", "George" e "Grace".
Atualize documentos
Existem muitos operadores de atualização suportados pelo MongoDB. Use os auxiliares Updates para ajudar a atualizar documentos em uma coleção.
A seguinte atualização corrige a hifenização para "Tim Berners-Lee":
collection.updateOne(equal("lastName", "Berners Lee"), set("lastName", "Berners-Lee"))     .printHeadResult("Update Result: ") 
Os métodos de atualização retornam um UpdateResult, que fornece informações sobre a operação, incluindo o número de documentos modificados pela atualização.
Exclua documentos
Para excluir no máximo um único documento, ou nenhum se nenhum documento corresponder ao filtro, use o método deleteOne() :
collection.deleteOne(equal("firstName", "Zaphod")).printHeadResult("Delete Result: ")