Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Nama atribut ekspresi (alias) di DynamoDB
Nama atribut ekspresi adalah alias (atau placeholder) yang Anda gunakan dalam ekspresi Amazon DynamoDB sebagai alternatif dari nama atribut yang sebenarnya. Nama atribut ekspresi harus dimulai dengan tanda pound (#
) dan diikuti oleh satu atau lebih karakter alfanumerik. Karakter underscore (_
) juga diperbolehkan.
Bagian ini menjelaskan beberapa situasi ketika Anda harus menggunakan nama atribut ekspresi.
catatan
Contoh di bagian ini menggunakan AWS Command Line Interface (AWS CLI).
Topik
Kata yang dicadangkan
Terkadang Anda mungkin perlu menulis ekspresi yang berisi nama atribut yang bertentangan dengan kata terpesan DynamoDB. (Untuk daftar lengkap kata-kata yang dicadangkan, lihat Kata-kata penggunaan khusus di DynamoDB.)
Misalnya, AWS CLI contoh berikut akan gagal karena COMMENT
merupakan kata yang dicadangkan.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "Comment"
Untuk mengatasi hal ini, Anda dapat mengganti Comment
dengan nama atribut ekspresi seperti #c
. #
(tanda pagar) diperlukan dan menunjukkan bahwa ini adalah placeholder untuk nama atribut. AWS CLI Contohnya sekarang akan terlihat seperti berikut ini.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#c" \ --expression-attribute-names '{"#c":"Comment"}'
catatan
Jika nama atribut dimulai dengan nomor, berisi spasi, atau berisi kata terpesan, Anda harus menggunakan nama atribut ekspresi untuk menggantikan nama atribut dalam ekspresi tersebut.
Nama atribut yang berisi karakter khusus
Dalam suatu ekspresi, titik (".") ditafsirkan sebagai karakter pemisah pada jalur dokumen. Namun, DynamoDB juga memungkinkan Anda menggunakan karakter titik dan karakter khusus lainnya, seperti tanda hubung (“-”) sebagai bagian dari nama atribut. Dalam beberapa kasus, ini bisa menjadi ambigu. Untuk menggambarkan, misalkan bahwa Anda ingin mengambil atribut Safety.Warning
dari item ProductCatalog
(lihat Mengacu pada atribut item saat menggunakan ekspresi di DynamoDB).
Misalkan Anda ingin mengakses Safety.Warning
menggunakan ekspresi proyeksi.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "Safety.Warning"
DynamoDB akan mengembalikan hasil kosong, bukan string yang diharapkan ("Always
wear a helmet
"). Hal ini karena DynamoDB menafsirkan titik dalam ekspresi sebagai pemisah jalur dokumen. Dalam hal ini, Anda harus menentukan nama atribut ekspresi (seperti #sw
) sebagai pengganti untuk Safety.Warning
. Anda kemudian dapat menggunakan ekspresi proyeksi berikut.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#sw" \ --expression-attribute-names '{"#sw":"Safety.Warning"}'
DynamoDB kemudian akan mengembalikan hasil yang benar.
catatan
Jika nama atribut berisi titik (".") atau tanda hubung ("-"), Anda harus menggunakan nama atribut ekspresi untuk menggantikan nama atribut dalam ekspresi tersebut.
Atribut bersarang
Misalkan Anda ingin mengakses atribut ProductReviews.OneStar
bersarang. Dalam nama atribut ekspresi, DynamoDB memperlakukan titik (“.”) sebagai karakter dalam nama atribut. Untuk mereferensikan atribut bersarang, tentukan nama atribut ekspresi untuk setiap elemen di jalur dokumen:
-
#pr — ProductReviews
-
#1star — OneStar
Anda kemudian dapat menggunakan #pr.#1star
untuk ekspresi proyeksi.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#pr.#1star" \ --expression-attribute-names '{"#pr":"ProductReviews", "#1star":"OneStar"}'
DynamoDB kemudian akan mengembalikan hasil yang benar.
Berulang kali mereferensikan nama atribut
Nama atribut ekspresi sangat membantu ketika Anda perlu merujuk ke nama atribut yang sama berulang-ulang. Misalnya, pertimbangkan ekspresi berikut untuk mengambil beberapa ulasan dari item ProductCatalog
.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "ProductReviews.FiveStar, ProductReviews.ThreeStar, ProductReviews.OneStar"
Untuk membuat hal ini lebih jelas, Anda dapat mengganti ProductReviews
dengan nama atribut ekspresi seperti #pr
. Ekspresi yang direvisi kini akan terlihat seperti berikut ini.
-
#pr.FiveStar, #pr.ThreeStar, #pr.OneStar
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#pr.FiveStar, #pr.ThreeStar, #pr.OneStar" \ --expression-attribute-names '{"#pr":"ProductReviews"}'
Jika Anda menentukan nama atribut ekspresi, Anda harus menggunakannya secara konsisten di seluruh ekspresi. Selain itu, Anda tidak dapat menghilangkan simbol #
.