Usar padrão de código da Builders
Nesta página
Visão geral
Esta página descreve como usar os vários construtores disponíveis em seu código e descreve os benefícios de usar os construtores fornecidos.
O driver Kotlin Sync fornece classes e métodos de construtor com segurança de tipo que permitem que os desenvolvedores criem query e agregações com eficiência.
Para saber mais sobre as classes e métodos de construtor disponíveis, consulte as seguintes seções de documentação da API:
Por que usar Construtores?
Se você usar apenas o Kotlin simples para construir documentos de query BSON, não poderá identificar erros de sintaxe até o tempo de execução. Os construtores ajudam a garantir a correção da sintaxe e podem ser menos prolixo do que a construção de documentos BSON.
Exemplo
Esta seção fornece três maneiras equivalentes de buscar os valores de campo email
de documentos na coleção users
que atendem aos seguintes critérios:
gender
o valor é"female"
age
o valor é maior que29
A seguinte classe de dados modela os documentos na coleção users
:
data class User( val id: ObjectId, val gender: String, val age: Int, val email: String )
A seguinte classe de dados modela os resultados retornados pela query:
data class Email( val email: String )
API de query do MongoDB
O exemplo a seguir executa a query usando a MongoDB Query API:
collection.find( { "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 } )
Filtro de classe do documento
O exemplo a seguir executa a query utilizando a classe Document
para construir o filtro de query:
val filter = Document("gender", "female").append("age", Document("\$gt", 29)) val projection = Document("_id", 0).append("email", 1) val results = collection.find<Email>(filter).projection(projection)
Nesse caso, você pode incluir facilmente um erro ao escrever o operador "\$gt"
no filtro, mas seu IDE retorna o erro relevante somente no tempo de execução.
API do Builders
O exemplo a seguir executa a query usando os ajudantes do construtor:
val filter = Filters.and( Filters.eq(User::gender.name, "female"), Filters.gt(User::age.name, 29) ) val projection = Projections.fields( Projections.excludeId(), Projections.include("email") ) val results = collection.find<Email>(filter).projection(projection)
Use construtores com classes de dados
O guia Usar Construtores com Classes de Dados fornece exemplos sobre como usar as classes de construtores anteriores diretamente com as propriedades da classe de dados. Este guia pode ajudar a tornar seu aplicação mais seguro de tipo e melhorar a interoperabilidade do Kotlin .