Menu Docs
Página inicial do Docs
/ / /
Kotlin Coroutine
/

Bancos de dados e coleções

Nesta página

  • Visão geral
  • Acessar um banco de dados
  • Acessar uma coleção
  • Especificar tipo de devolução
  • Criar uma coleção
  • Validação do documento
  • Obter uma lista de coleções
  • Solte uma coleção
  • Especifique o read preference, read concern e write concern

Este guia mostra como usar reconhecimento de data center e collection do MongoDB com o driver Kotlin do MongoDB.

O MongoDB organiza os dados em uma hierarquia dos seguintes níveis:

  1. Bancos de dados: bancos de dados são o nível mais alto de organização de dados em uma instância do MongoDB.

  2. collection: O reconhecimento de data center são organizados em collection que contêm documento.

  3. Documentos: os documentos contêm dados literais, como strings, números e datas, bem como outros documentos incorporados. Para obter mais informações sobre os tipos de campo de documento e estrutura, consulte a documentação do servidor sobre documentos.

Com o driver MongoDB Kotlin , você pode modelar dados usando classes de dados Kotlin ou usando a classe Documento para armazenar e recuperar dados do MongoDB.

Para saber mais sobre o uso de classes de dados, consulte o guia sobre o Formato de dados da classe de dados. Para saber mais sobre como usar a classe Document , consulte o guia sobre o Formato de dados do documento.

Use o getDatabase() de uma MongoClient instância para acessar um MongoDatabase em uma instância do MongoDB .

O exemplo a seguir acessa um banco de dados denominado testDatabase :

val database = client.getDatabase("testDatabase")

Use o método getCollection() de uma MongoDatabase instância para acessar um MongoCollection em um banco de dados de sua instância MongoDB conectada.

O exemplo a seguir acessa uma collection chamada testCollection de um MongoDatabase que contém documento do tipo ExampleDataClass:

Modelo de dados ExemploDataClass
data class ExampleDataClass(
@BsonId val id: ObjectId = ObjectId(),
val exampleProperty: String,
)
val collection = database.getCollection<ExampleDataClass>("testCollection")

Dica

Se o nome da coleção fornecido ainda não existir no banco de dados, o MongoDB criará implicitamente a coleção quando você inserir os dados pela primeira vez nessa coleção.

O driver fornece uma maneira de especificar uma classe para documentos retornados de uma coleta, mesmo que seja diferente da classe especificada ao recuperar a coleta. Você pode especificar uma classe de devolução usando o MongoCollection.withDocumentClass() método.

Especificar uma classe de devolução diferente pode ser útil nas seguintes situações:

  • Sua collection contém vários tipos de dados.

  • Você especifica uma projeção que altera seus campos de dados.

  • Não é possível especificar diretamente um tipo de retorno em um método que altera os dados, como findOneAndUpdate() ou findOneAndReplace().

O exemplo seguinte recupera uma collection que contém dados representados pela classe de dados Fruit mas retorna o resultado de uma operação findOneAndUpdate() como uma instância da classe NewFruit . A operação altera o nome do campo qty para quantity e adiciona um item ao campo de array seasons no documento com um valor name de "strawberry":

Modelo de dados Realm de frutas
data class Fruit(
@BsonId val id: Int,
val name: String,
val qty: Int,
val seasons: List<String>
)
val collection =
database.getCollection<Fruit>("fruits")
// Define a data class for returned documents
data class NewFruit(
@BsonId val id: Int,
val name: String,
val quantity: Int,
val seasons: List<String>
)
val filter = Filters.eq(Fruit::name.name, "strawberry")
val update = Updates.combine(
Updates.rename(Fruit::qty.name, "quantity"),
Updates.push(Fruit::seasons.name, "fall"),
)
val options = FindOneAndUpdateOptions()
.returnDocument(ReturnDocument.AFTER)
// Specify the class for returned documents as the type parameter in withDocumentClass()
val result = collection
.withDocumentClass<NewFruit>()
.findOneAndUpdate(filter, update, options)
println(result)
NewFruit(id=1, name=strawberry, quantity=205, seasons=[summer, fall])

Use o método createCollection() de uma MongoDatabase instância do para criar uma coleção em um banco de dados de dados de sua instância MongoDB conectada.

O exemplo a seguir cria uma collection chamada exampleCollection:

database.createCollection("exampleCollection")

Você pode especificar opções de coleta, como tamanho máximo e regras de validação de documento, usando as opções CreateCollectionOptions aula. O método createCollection() aceita uma instância de CreateCollectionOptions como um segundo parâmetro opcional.

A validação de documentos oferece a capacidade de validar documentos em relação a uma série de filtros durante as gravações em uma collection. Você pode especificar esses filtros usando as opções de validação classe, que aceita uma série de filtros instâncias que especificam as regras e expressões de validação:

val collOptions: ValidationOptions = ValidationOptions().validator(
Filters.or(
Filters.exists("title"),
Filters.exists("name")
)
)
database.createCollection(
"movies",
CreateCollectionOptions().validationOptions(collOptions)
)

Para obter mais informações, consulte a documentação do servidor para validação de documentos.

Você pode executar uma consulta de uma lista de coleções em um banco de dados utilizando MongoDatabase.listCollectionNames() :

val collectionList = database.listCollectionNames().toList()
println(collectionList)
[movies, exampleCollection]

Você pode remover uma coleção do banco de dados usando o método MongoCollection.drop() :

val collection =
database.getCollection<ExampleDataClass>("movies")
collection.drop()

Aviso

Eliminar uma coleção exclui todos os dados da coleção

Descartar uma collection do seu banco de dados também exclui permanentemente todos os documentos e todos os índices dessa collection. Somente descarte collections que contenham dados que não são mais necessários.

As preferências de leitura, as write concerns e as read concerns controlam como o driver direciona as operações de leitura e espera a confirmação das operações de leitura e gravação quando conectado a um conjunto de réplicas do MongoDB. As preferências de leitura e as preocupações de leitura se aplicam a todas as operações de leitura; as write concerns se aplicam a todas as operações de gravação.

MongoDatabase instâncias herdam suas configurações de write concern, read concern e write preference do MongoClient usado para criá-las. instâncias MongoCollection herdam suas configurações de write concern, read concern e write preference do MongoDatabase usado para criá-las. No entanto, você pode usar os seguintes métodos para obter uma instância de um MongoDatabase ou MongoCollection com uma read preference, read concern ou write preference que difere da configuração que elas normalmente herdariam:

Dica

Os métodos withReadConcern(), withReadPreference() e withWriteConcern criam uma nova instância de um MongoDatabase ou MongoCollection com a preferência ou preocupação desejada. O MongoDatabase ou MongoCollection sobre o qual o método é chamado mantém suas configurações originais de preferência e preocupação.

Para obter mais informações sobre esses tópicos, consulte as seguintes páginas no manual do servidor:

Voltar

Stable API