

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

# 在 Amazon DocumentDB 8.0 中使用檢視
<a name="views"></a>
+ Amazon DocumentDB 8.0 現在支援檢視。檢視 函數做為虛擬集合，這些集合會根據指定的彙總操作呈現資料。當您建立檢視時，您可以定義查詢，從一或多個來源集合轉換資料。Amazon DocumentDB 8.0 會在每次存取檢視時執行此查詢，而不會消耗額外的儲存資源。與標準集合不同，Amazon DocumentDB 8.0 中的檢視不會將文件存放在磁碟上，因此是將轉換或篩選資料呈現給應用程式的有效解決方案。若要在 Amazon DocumentDB 中建立檢視，您可以使用 createView 命令或 db.createView() 協助程式方法：

  ```
  db.createView("viewName","sourceCollection",
  [
      { $match: { status: "active" } },
      { $project: { _id: 1, name: 1, email: 1 } }
  ]
  )
  ```

  這會根據「sourceCollection」建立名為「viewName」的檢視，其中僅包含作用中的文件和專案 \$1id、名稱和電子郵件欄位。Amazon DocumentDB 中的檢視為唯讀。檢視上的寫入操作將傳回錯誤。若要使用大型資料集獲得最佳效能，您可以建構檢視管道以最大化效率。對於複雜的彙總管道，建議使用 \$1match 階段作為管道的第一個階段或早期階段，以減少後續階段需要處理的文件數量，從而提高查詢效能。

## 最佳實務
<a name="views-bestpractices"></a>

以下列出一些要遵循檢視的最佳實務。
+ 早期篩選：在檢視管道的早期使用 \$1match 階段，以減少處理的資料量。
+ 避免複雜彙總：對於具有複雜彙總的經常存取檢視，請考慮建立具有預先計算結果的個別集合，這些結果會定期更新。
+ 索引規劃：確保在檢視管道中使用的欄位，特別是在 \$1match 和 \$1sort 操作中，在來源集合上正確編製索引。
+ 查詢最佳化：使用 explain 命令來了解檢視查詢的執行方式，並據此進行最佳化。
+ 檢視的替代方案：考慮到 Amazon DocumentDB 和 MongoDB 檢視之間的功能差異，在遇到限制時，請考慮使用定期集合搭配排程更新作為檢視的替代方案。

## 彙整工具運算子相容性
<a name="views-aggregators"></a>

Amazon DocumentDB 在檢視定義中支援許多彙總運算子，同時繼續擴展相容性。使用檢視時，請專注於這些支援的運算子：
+ \$1match 用於篩選文件
+ \$1project 用於欄位選擇和轉換
+ \$1addFields 用於新增運算欄位
+ 用於排序結果的 \$1sort
+ \$1limit 和 \$1skip 分頁

有些專業運算子，例如 \$1currentOp、\$1replaceRoot 和 \$1geoNear，目前適用於直接彙總查詢，而不是檢視定義。

## 利用索引和檢視
<a name="views-indexes"></a>

Amazon DocumentDB 8.0 中的檢視會使用基礎集合的索引。因此，您無法直接在檢視上建立、捨棄或重建索引。不過，在來源集合上精心設計的索引可以大幅改善檢視查詢效能 以下是最佳化檢視查詢效能的一些步驟：
+ 確保檢視管道中使用的來源集合欄位上存在適當的索引，特別是在 \$1match 和 \$1sort 操作中
+ 使用 explain() 方法來分析查詢執行計畫並驗證索引用量。例如， `db.viewName.find({...}).explain() `