

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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>

開始前，請確定您具有下列項目：
+ 具有已設定 DocumentDB 叢集 AWS 的帳戶。請參閱此 DocumentDB 叢集設定的[入門部落格文章](https://aws.amazon.com/blogs/database/part-1-getting-started-with-amazon-documentdb-using-amazon-ec2/)。
+ 已安裝 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>

本指南中的所有範例程式碼都假設連線到具有「Restaurants」集合的「ProgGuideData」測試資料庫。本指南中的所有範例程式碼都適用於餐廳清單系統，以下是此系統中文件的外觀範例：

```
{
    "_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 版進行測試。