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

构建器

本部分包括有关如何使用每个可用构建者的指南,并演示了 Java Reactive Streams 驱动程序构建者类提供的实用程序。

Java Reactive Streams 驱动程序包括用于 CRUD 操作和聚合 API 的构建器类。静态实用程序方法可以使您更高效地构建查询和其他文档。

使用构建者类时,您可以利用以下功能:

  • 用于在开发过程中发现错误的 Java 编译器

  • 用于发现和代码完成的 IDE

构建者类使 Java 编译器和 IDE 能够及早捕获错误,如操作符拼写错误或缺少参数。如果使用 MongoDB shell 或普通 Java,则将操作符写入字符串,并且无法获得问题的可视化指示,从而将这些错误推送到运行时而不是编译时。

通过使用构建器类,您可以将操作符写入为方法,以便 IDE 立即指示代码是否有错误。 开发时,IDE 还可以向您显示可以使用的方法,并且可以使用占位符参数来完成代码。

假设您要向 users集合中满足以下条件的所有用户发送市场营销电子邮件:

  • gender字段值为 "female" 的用户

  • age字段的值大于 29 的用户

您还需要让查询仅返回他们的电子邮件地址。

users 集合中的文档由以下类进行建模:

record User(
@BsonId ObjectId id,
String gender,
int age,
String email
)

以下代码提供了在MongoDB Shell中用于执行查询的命令:

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

以下代码提供了在 Java Reactive Streams 驱动程序中不使用构建者创建的查找操作:

Bson filter = new Document().append("gender", "female").append("age", new Document().append("$gt", 29));
Bson projection = new Document().append("_id", 0).append("email", 1);
Flux.from(collection.find(filter).projection(projection))
.doOnNext(doc -> System.out.println(doc.toJson()))
.blockLast();

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

以下代码提供了使用 Java Reactive Streams 驱动程序中的构建器创建的查找操作:

import static com.mongodb.client.model.Filters.*;
import static com.mongodb.client.model.Projections.*;
Bson filter = and(eq("gender", "female"), gt("age", 29));
Bson projection = fields(excludeId(), include("email"));
Flux.from(collection.find(filter).projection(projection))
.doOnNext(doc -> System.out.println(doc.toJson()))
.blockLast();
  • 聚合,用于构建聚合管道

  • 用于构建查询筛选条件的过滤器

  • 用于创建索引键的索引

  • 用于构建投影的投影

  • 排序,用于构建排序条件

  • 用于构建更新的更新