Visão geral
Esta seção inclui guias sobre como usar cada um dos construtores disponíveis e demonstra a utilidade que as classes de construtores de drivers do MongoDB Kotlin fornecem.
O driver Kotlin fornece classes para simplificar o processo para os desenvolvedores usarem operações CRUD e a API de agregação. Os métodos de utilidade estática permitem que você crie uma query com mais eficiência.
Por que usar Construtores?
Usando a classe de construtores, você aproveita o poder de:
O compilador Kotlin e o IDE para encontrar erros durante o desenvolvimento
O IDE para descoberta e conclusão de código
Ao usar construtores, o compilador Kotlin e o IDE detectam erros como operadores com erros ortográficos desde o início. Ao usar o shell do MongoDB ou o Kotlin simples, você escreve operadores como strings e não obtém indicação visual de um problema, enviando esses erros para o tempo de execução em vez de compilar.
Com as classes de construtor, você grava operadores como métodos. O IDE sublinha instantaneamente e mostra uma barra vermelha à direita indicando que algo está errado. Durante o desenvolvimento, o IDE também mostra os métodos que você pode usar. Ele preenche automaticamente seu código com parâmetros de espaço reservado depois que você seleciona qual método deseja usar.
Cenário
Imagine que queremos enviar um e-mail de marketing a todos os usuários em nossa collection users
com os seguintes critérios:
Usuários que se identificam como
female
gêneroUsuários com mais de
29
Como queremos apenas o endereço de e-mail deles, garantiremos que nossa query não retorne dados pelos quais pagamos custos de largura de banda, mas de que não precisamos.
Os documentos na collection users
são modelados com a seguinte classe de dados em nosso aplicativo:
data class User( val id: BsonObjectId = BsonObjectId(), val gender: String, val age: Int, val email: String, )
Usando o MongoDB Shell
collection.find({ "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 })
Sem usar construtores
data class Results(val email: String) val filter = Document().append("gender", "female").append("age", Document().append("\$gt", 29)) val projection = Document().append("_id", 0).append("email", 1) val results = collection.find<Results>(filter).projection(projection)
Usando os Construtores
import com.mongodb.client.model.Filters import com.mongodb.client.model.Projections
data class Results(val email: String) 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<Results>(filter).projection(projection)