

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon DocumentDB Java 编程指南
<a name="docdb-java-pg"></a>

这个综合性指南详细介绍了如何使用 MongoDB 的 Java 驱动程序处理 Amazon DocumentDB，涵盖数据库操作与管理的基本方面。

**Topics**
+ [简介](#java-pg-intro)
+ [先决条件](#java-pg-prereqs)
+ [数据模型](#java-pg-data-models)
+ [使用 Java 驱动程序进行连接](java-pg-connect-mongo-driver.md)
+ [使用 Java 执行 CRUD 操作](java-crud-operations.md)
+ [使用 Java 进行索引管理](index-management-java.md)
+ [事件驱动型编程](event-driven-programming.md)

## 简介
<a name="java-pg-intro"></a>

本指南从连接开始，阐述如何使用 MongoDB Java 驱动程序建立到 DocumentDB 集群的安全连接。它详细介绍了连接字符串组件、 SSL/TLS 实现和各种连接选项，包括 IAM 身份验证和连接池，以及强大的错误处理策略。

在 CRUD（创建、读取、更新、删除）操作章节中，本指南全面介绍了文档操作，演示了如何使用单个和批量操作创建、读取、更新和删除文档。阐释了筛选条件、查询和各种操作选项的用法，同时强调了错误处理和实现重试逻辑以提高可靠性的最佳实践。本指南还广泛介绍了索引管理，详细说明了不同索引类型（包括单字段索引、复合索引、稀疏索引和文本索引）的创建和维护。阐释了如何通过正确选择索引和使用 `explain()` 函数分析查询执行计划，来优化查询性能。

最后一节重点介绍使用 Amazon DocumentDB 的变更流进行事件驱动型编程，演示如何在 Java 应用程序中实现实时数据变更监控。介绍了变更流光标的实现、用于持续操作的恢复令牌的处理以及用于历史数据处理的基于时间的操作。本指南中提供了实用的代码示例和最佳实践，可作为帮助您使用 Amazon DocumentDB 构建强大 Java 应用程序的宝贵资源。

## 先决条件
<a name="java-pg-prereqs"></a>

在开始之前，请确保您具有以下各项：
+ 具有已配置文档数据库集群的 AWS 账户。请参阅此篇[入门博客文章](https://aws.amazon.com/blogs/database/part-1-getting-started-with-amazon-documentdb-using-amazon-ec2/)，了解 DocumentDB 集群设置。
+ 已安装 Java 开发工具包（JDK）（在本指南中，我们将使用 [Amazon Corretto 21](https://docs.aws.amazon.com/corretto/latest/corretto-21-ug/downloads-list.html)）。
+ 用于依赖项管理的 Maven。

## 本指南的数据模型
<a name="java-pg-data-models"></a>

本指南中的所有示例代码都假设连接到具有 “RestaurantsProgGuideData” 集合的 “” 测试数据库。本指南中的所有示例代码都适用于餐厅列表系统，以下是该系统中文档的示例：

```
{
    "_id": "ab6ad8f119b5bca3efa2c7ae",
    "restaurantId": "REST-CRT9BL",
    "name": "Thai Curry Palace",
    "description": "Amazing Restaurant, must visit",
    "cuisine": "Thai",
    "address": {
        "street": "914 Park Street",
        "city": "Bryan",
        "state": "AL",
        "zipCode": "96865",
        "location": {
            "type": "Point",
            "coordinates": [-25.4619, 8.389]
        }
    },
    "contact": {
        "phone": "(669) 915-9056 x6657"
    },
    "rating": {
        "average": 3.4,
        "totalReviews": 275
    },
    "priceRange": "$",
    "menu": [{
        "category": "Appetizers",
        "items": [{
            "name": "Buffalo Chicken Wings",
            "price": 13.42
        }]
    }],
    "features": [
        "Private Dining"
    ],
    "isActive": false“ michelin”: {“
        star”: 3,
        “ranking_years”: 4
    }
}
```

所有显示 CRUD、索引管理和事件驱动型编程的代码示例都假设您已具有一个 [https://mongodb.github.io/mongo-java-driver/5.3/apidocs/mongodb-driver-sync/com/mongodb/client/MongoClient.html](https://mongodb.github.io/mongo-java-driver/5.3/apidocs/mongodb-driver-sync/com/mongodb/client/MongoClient.html) 对象 `dbClient`、一个 [https://mongodb.github.io/mongo-java-driver/5.3/apidocs/mongodb-driver-sync/com/mongodb/client/MongoDatabase.html](https://mongodb.github.io/mongo-java-driver/5.3/apidocs/mongodb-driver-sync/com/mongodb/client/MongoDatabase.html) 对象 `connectionDB` 和一个 [https://mongodb.github.io/mongo-java-driver/5.3/apidocs/mongodb-driver-sync/com/mongodb/client/MongoCollection.html#find()](https://mongodb.github.io/mongo-java-driver/5.3/apidocs/mongodb-driver-sync/com/mongodb/client/MongoCollection.html#find()) 对象 `collection`。

**注意**  
本指南中的所有代码示例均已使用 MongoDB Java 驱动程序版本 5.3.0 进行了测试。