Ekspresi kondisi - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Ekspresi kondisi

Untuk memanipulasi data dalam tabel Amazon DynamoDB, Anda menggunakan operasi PutItem, UpdateItem, dan DeleteItem.

Untuk operasi manipulasi data ini, Anda dapat menentukan ekspresi kondisi untuk menentukan item mana yang harus dimodifikasi. Jika ekspresi kondisi bernilai true, operasi berhasil; jika tidak, operasi akan gagal.

DeleteItemOperasiPutItem,UpdateItem, dan memiliki ReturnValues parameter yang dapat Anda gunakan untuk mengembalikan nilai atribut seperti yang muncul sebelum atau setelah Anda memodifikasinya. Untuk informasi lebih lanjut, lihat ReturnValues.

Berikut ini adalah beberapa AWS Command Line Interface (AWS CLI) contoh penggunaan ekspresi kondisi. Contoh-contoh ini berdasarkan tabel ProductCatalog, yang diperkenalkan dalam Menentukan atribut item saat menggunakan ekspresi. Kunci partisi untuk tabel ini adalah Id, dan tidak ada kunci urutan. Operasi PutItem berikut membuat item ProductCatalog sampel yang dirujuk oleh contoh.

aws dynamodb put-item \ --table-name ProductCatalog \ --item file://item.json

Argumen untuk --item disimpan dalam file item.json. (Untuk kemudahan, hanya beberapa atribut item yang digunakan.)

{ "Id": {"N": "456" }, "ProductCategory": {"S": "Sporting Goods" }, "Price": {"N": "650" } }

Put bersyarat

Operasi PutItem menimpa item dengan kunci primer yang sama (jika ada). Jika Anda ingin menghindari hal ini, gunakan ekspresi kondisi. Hal ini memungkinkan penulisan untuk dilanjutkan hanya jika item yang dimaksud belum memiliki kunci primer yang sama.

Contoh berikut digunakan attribute_not_exists() untuk memeriksa apakah kunci primer ada dalam tabel sebelum mencoba operasi tulis.

catatan

Jika kunci primer Anda terdiri dari kunci partisi (pk) dan kunci urutan (sk), parameter akan memeriksa apakah attribute_not_exists(pk) DAN attribute_not_exists(sk) mengevaluasi benar atau salah sebelum mencoba operasi tulis.

aws dynamodb put-item \ --table-name ProductCatalog \ --item file://item.json \ --condition-expression "attribute_not_exists(Id)"

Jika ekspresi kondisi bernilai false, DynamoDB mengembalikan pesan kesalahan berikut: Permintaan bersyarat gagal.

catatan

Untuk informasi selengkapnya tentang fungsi attribute_not_exists dan lainnya, lihat Operator perbandingan dan referensi fungsi.

Penghapusan bersyarat

Untuk melakukan penghapusan bersyarat, Anda menggunakan operasi DeleteItem dengan ekspresi kondisi. Ekspresi kondisi harus bernilai true agar operasi berhasil; jika tidak, operasi akan gagal.

Pertimbangkan item dari Ekspresi kondisi.

{ "Id": { "N": "456" }, "Price": { "N": "650" }, "ProductCategory": { "S": "Sporting Goods" } }

Misalkan Anda ingin menghapus item, tetapi hanya dalam kondisi berikut:

  • ProductCategory adalah "Alat Olahraga" atau "Perlengkapan Berkebun."

  • Price adalah antara 500 dan 600.

Contoh berikut mencoba menghapus versi item.

aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"456"}}' \ --condition-expression "(ProductCategory IN (:cat1, :cat2)) and (Price between :lo and :hi)" \ --expression-attribute-values file://values.json

Argumen untuk --expression-attribute-values disimpan dalam file values.json.

{ ":cat1": {"S": "Sporting Goods"}, ":cat2": {"S": "Gardening Supplies"}, ":lo": {"N": "500"}, ":hi": {"N": "600"} }
catatan

Dalam ekspresi kondisi, : (karakter titik dua) menunjukkan nilai atribut ekspresi—placeholder untuk nilai aktual. Untuk informasi selengkapnya, lihat Nilai atribut ekspresi.

Untuk informasi selengkapnya tentang IN, AND, dan kata kunci lainnya, lihat Operator perbandingan dan referensi fungsi.

Dalam contoh ini, perbandingan ProductCategory bernilai true, tetapi perbandingan Price bernilai false. Hal ini menyebabkan ekspresi kondisi untuk bernilai false dan operasi DeleteItem gagal.

Pembaruan bersyarat

Untuk melakukan pembaruan bersyarat, Anda menggunakan operasi UpdateItem dengan ekspresi kondisi. Ekspresi kondisi harus bernilai true agar operasi berhasil; jika tidak, operasi akan gagal.

catatan

UpdateItem juga mendukung ekspresi pembaruan, di mana Anda menentukan modifikasi yang ingin Anda buat ke item. Untuk informasi selengkapnya, lihat Ekspresi pembaruan.

Misalkan Anda memulai dengan item yang ditampilkan dalam Ekspresi kondisi.

{ "Id": { "N": "456"}, "Price": {"N": "650"}, "ProductCategory": {"S": "Sporting Goods"} }

Contoh berikut melakukan operasi UpdateItem. Operasi ini mencoba untuk mengurangi Price dari produk sebesar 75—tetapi ekspresi kondisi mencegah pembaruan jika Price saat ini kurang dari atau sama dengan 500.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --update-expression "SET Price = Price - :discount" \ --condition-expression "Price > :limit" \ --expression-attribute-values file://values.json

Argumen untuk --expression-attribute-values disimpan dalam file values.json.

{ ":discount": { "N": "75"}, ":limit": {"N": "500"} }

Jika Price awal adalah 650, operasi UpdateItem mengurangi Price menjadi 575. Jika Anda menjalankan operasi UpdateItem lagi, Price berkurang menjadi 500. Jika Anda menjalankannya untuk kali ketiga, ekspresi kondisi bernilai false, dan pembaruan gagal.

catatan

Dalam ekspresi kondisi, : (karakter titik dua) menunjukkan nilai atribut ekspresi—placeholder untuk nilai aktual. Untuk informasi selengkapnya, lihat Nilai atribut ekspresi.

Untuk informasi selengkapnya tentang ">" dan operator lainnya, lihat Operator perbandingan dan referensi fungsi.

Contoh ekspresi bersyarat

Untuk informasi selengkapnya tentang fungsi yang digunakan dalam contoh berikut, lihat Operator perbandingan dan referensi fungsi. Jika Anda ingin tahu lebih banyak tentang cara menentukan jenis atribut yang berbeda dalam suatu ekspresi, lihat Menentukan atribut item saat menggunakan ekspresi.

Memeriksa atribut dalam item

Anda dapat memeriksa keberadaan (atau ketiadaan) atribut apa pun. Jika ekspresi kondisi bernilai true, operasi berhasil; jika tidak, operasi akan gagal.

Contoh berikut menggunakan attribute_not_exists untuk menghapus produk hanya jika operasi tidak memiliki atribut Price.

aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "attribute_not_exists(Price)"

DynamoDB juga menyediakan fungsi attribute_exists. Contoh berikut menghapus produk hanya jika operasi telah menerima ulasan buruk.

aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "attribute_exists(ProductReviews.OneStar)"

Memeriksa jenis atribut

Anda dapat memeriksa jenis daya nilai atribut dengan menggunakan fungsi attribute_type. Jika ekspresi kondisi bernilai true, operasi berhasil; jika tidak, operasi akan gagal.

Contoh berikut menggunakan attribute_type untuk menghapus produk hanya jika memiliki atribut Color jenis Set String.

aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "attribute_type(Color, :v_sub)" \ --expression-attribute-values file://expression-attribute-values.json

Argumen untuk --expression-attribute-values disimpan dalam file expression-attribute-values.json.

{ ":v_sub":{"S":"SS"} }

Memeriksa nilai awal string

Anda dapat memeriksa apakah nilai atribut String dimulai dengan substring tertentu dengan menggunakan fungsi begins_with. Jika ekspresi kondisi bernilai true, operasi berhasil; jika tidak, operasi akan gagal.

Contoh berikut menggunakan begins_with untuk menghapus produk hanya jika elemen FrontView dari peta Pictures dimulai dengan nilai tertentu.

aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "begins_with(Pictures.FrontView, :v_sub)" \ --expression-attribute-values file://expression-attribute-values.json

Argumen untuk --expression-attribute-values disimpan dalam file expression-attribute-values.json.

{ ":v_sub":{"S":"http://"} }

Memeriksa elemen dalam set

Anda dapat memeriksa elemen dalam set atau mencari substring dalam string dengan menggunakan fungsi contains. Jika ekspresi kondisi bernilai true, operasi berhasil; jika tidak, operasi akan gagal.

Contoh berikut menggunakan contains untuk menghapus produk hanya jika elemen Set String Color memiliki elemen dengan nilai tertentu.

aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "contains(Color, :v_sub)" \ --expression-attribute-values file://expression-attribute-values.json

Argumen untuk --expression-attribute-values disimpan dalam file expression-attribute-values.json.

{ ":v_sub":{"S":"Red"} }

Memeriksa ukuran nilai atribut

Anda dapat memeriksa ukuran nilai atribut dengan menggunakan fungsi size. Jika ekspresi kondisi bernilai true, operasi berhasil; jika tidak, operasi akan gagal.

Contoh berikut menggunakan size untuk menghapus produk hanya jika ukuran atribut Binari VideoClip lebih besar dari 64000 byte.

aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "size(VideoClip) > :v_sub" \ --expression-attribute-values file://expression-attribute-values.json

Argumen untuk --expression-attribute-values disimpan dalam file expression-attribute-values.json.

{ ":v_sub":{"N":"64000"} }