

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

# 投影
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-projections"></a>

使用 `GetItem`、`BatchGetItem`、、 `Scan` `Query`和 `TransactGetItems`操作讀取 DynamoDB 中的物件時，您可以選擇指定投影，以識別您想要的屬性。投影具有下列結構，類似於篩選條件：

```
"projection" : {
    "expression" : "projection expression"
    "expressionNames" : {
        "#name" : "name",
    }
}
```

欄位定義如下：

**`expression`**   
投影表達式，這是字串。若要擷取單一屬性，請指定其名稱。對於多個屬性，名稱必須是逗號分隔值。如需撰寫投影表達式的詳細資訊，請參閱 [DynamoDB 投影表達](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ProjectionExpressions.html)式文件。此欄位為必填。

 **`expressionNames`**   
以鍵/值對形式取代表達式屬性*名稱*預留位置。索引鍵對應至用於 `expression` 的名稱預留位置。值必須是對應於 DynamoDB 中項目屬性名稱的字串。此欄位是選用的，應僅填入 中使用的表達式屬性名稱預留位置的替換`expression`。如需 的詳細資訊`expressionNames`，請參閱 [DynamoDB 文件](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html)。

## 範例 1
<a name="id25"></a>

下列範例是 VTL 映射範本的投影區段，其中只有屬性 `id` `author`和 會從 DynamoDB 傳回：

```
"projection" : {
    "expression" : "#author, id",
    "expressionNames" : {
        "#author" : "author"
    }
}
```

**提示**  
您可以使用 [\$1context.info.selectionSetList](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference.html#aws-appsync-resolver-context-reference-info) 存取 GraphQL 請求選取集。此欄位可讓您根據您的需求動態架構投影表達式。

**注意**  
搭配 `Query`和 `Scan`操作使用投影表達式時， 的值`select`必須是 `SPECIFIC_ATTRIBUTES`。如需詳細資訊，請參閱 [DynamoDB 文件](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html#DDB-Query-request-Select)。