Bancos de dados e coleções
Nesta página
Visão geral
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:
Bancos de dados: bancos de dados são o nível mais alto de organização de dados em uma instância do MongoDB.
collection: O reconhecimento de data center são organizados em collection que contêm documento.
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.
Acessar um banco de dados
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")
Acessar uma coleção
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
:
data class ExampleDataClass( 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.
Especificar tipo de devoluçã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()
oufindOneAndReplace()
.
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"
:
data class Fruit( 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( 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])
Criar uma coleção
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.
Validação do documento
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.
Obter uma lista de coleções
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]
Solte uma coleção
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.
Especifique o read preference, read concern e write concern
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: