Nama atribut ekspresi (alias) di DynamoDB - Amazon DynamoDB

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).

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