对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

使用构建器 Code Pattern

本页介绍如何在代码中使用各种可用的构建者,并介绍使用所提供构建者的好处。

Kotlin 同步驱动程序提供了类型安全的构建者类和方法,启用开发者能够高效地构建查询和聚合。

要学习;了解有关可用构建器类和方法的更多信息,请参阅以下API文档部分:

如果仅使用普通Kotlin来构造BSON查询文档,则直到运行时才能识别语法错误。 构建者有助于确保语法的正确性,并且比构建BSON文档更简洁。

本部分提供了三种等效方法来获取users集合中满足以下条件的文档的email字段值:

  • gender 值为 "female"

  • age 值大于 29

以下数据类对users集合中的文档进行建模:

data class User(
@BsonId val id: ObjectId,
val gender: String,
val age: Int,
val email: String
)

以下数据类对查询返回的结果进行建模:

data class Email(
val email: String
)

以下示例使用MongoDB查询API执行查询:

collection.find(
{ "gender": "female", "age" : { "$gt": 29 }},
{ "_id": 0, "email": 1 }
)

以下示例使用Document类构造查询过滤来执行查询:

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)

在这种情况下,您在过滤中写入 "\$gt"操作符时可能很容易出现错误,但 IDE 仅在运行时返回相关错误。

以下示例使用构建器助手执行查询:

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)

将构建器与数据类结合使用指南提供了有关如何将前面的构建者类直接与数据类属性结合使用的示例。本指南可能有助于提高应用程序的类型安全性,并提高Kotlin互操作性。