Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Berikut ini adalah beberapa AWS Command Line Interface (AWS CLI) contoh penggunaan ekspresi kondisi. Contoh-contoh ini berdasarkan tabel ProductCatalog
, yang diperkenalkan dalam Mengacu pada atribut item saat menggunakan ekspresi di DynamoDB. 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 utama Anda terdiri dari kedua kunci partisi (pk) dan kunci sortir (sk), parameter akan memeriksa apakah attribute_not_exists(pk)
DAN attribute_not_exists(sk)
mengevaluasi menjadi benar atau salah sebagai pernyataan keseluruhan 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 Kondisi dan filter ekspresi, operator, dan fungsi di DynamoDB.
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 yang didefinisikan di atas.
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 Menggunakan nilai atribut ekspresi di DynamoDB.
Untuk informasi selengkapnya tentang IN
, AND
, dan kata kunci lainnya, lihat Kondisi dan filter ekspresi, operator, dan fungsi di DynamoDB.
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 Menggunakan ekspresi pembaruan di DynamoDB.
Misalkan Anda mulai dengan item yang didefinisikan di atas.
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 Menggunakan nilai atribut ekspresi di DynamoDB.
Untuk informasi selengkapnya tentang ">" dan operator lainnya, lihat Kondisi dan filter ekspresi, operator, dan fungsi di DynamoDB.
Contoh ekspresi bersyarat
Untuk informasi selengkapnya tentang fungsi yang digunakan dalam contoh berikut, lihat Kondisi dan filter ekspresi, operator, dan fungsi di DynamoDB. Jika Anda ingin tahu lebih banyak tentang cara menentukan jenis atribut yang berbeda dalam suatu ekspresi, lihat Mengacu pada atribut item saat menggunakan ekspresi di DynamoDB.
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 expression-attribute-values file.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 expression-attribute-values file.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 expression-attribute-values file.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 expression-attribute-values file.json.
{
":v_sub":{"N":"64000"}
}