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

构建器

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

Java Reactive Streams驾驶员包括用于增删改查操作和 Aggregation 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();
  • 用于构建聚合管道的聚合

  • 用于构建查询筛选器的筛选器

  • 用于创建索引键的索引

  • 用于建筑投影的投影

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

  • 用于构建更新的更新