Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
catatan
Kami menyarankan agar Anda menggunakan parameter ekspresi yang baru, bukan parameter warisan ini, jika memungkinkan. Untuk informasi selengkapnya, lihat Menggunakan ekspresi di DynamoDB. Untuk informasi spesifik tentang parameter baru sebagai pengganti untuk yang satu ini, gunakan ConditionExpressionsebagai gantinya..
Parameter bersyarat warisan Expected
adalah blok bersyarat untuk operasi UpdateItem
. Expected
adalah peta pasangan atribut/syarat. Setiap elemen peta terdiri dari nama atribut, operator perbandingan, dan satu atau beberapa nilai. DynamoDB membandingkan atribut dengan nilai(-nilai) yang Anda berikan, menggunakan operator perbandingan. Untuk setiap elemen Expected
, hasil evaluasi adalah true atau false.
Jika Anda menentukan lebih dari satu elemen dalam peta Expected
, secara default semua syarat harus bernilai true. Dengan kata lain, kondisi digabungkan menggunakan AND
operator. (Anda dapat menggunakan parameter ConditionalOperator
untuk syarat OR sebagai gantinya. Jika Anda melakukan ini, setidaknya salah satu syarat harus bernilai true, bukan semuanya.)
Jika peta Expected
bernilai true, operasi bersyarat berhasil; jika tidak, gagal.
Expected
berisi hal berikut ini:
-
AttributeValueList
- Satu atau beberapa nilai untuk mengevaluasi atribut yang disediakan. Jumlah nilai dalam daftar tergantung padaComparisonOperator
yang sedang digunakan.Untuk jenis Angka, perbandingan nilainya bersifat numerik.
Perbandingan nilai string untuk lebih besar dari, sama dengan, atau kurang dari didasarkan pada Unicode dengan UTF-8 encoding biner. Sebagai contoh,
a
lebih besar dariA
, dana
lebih besar dariB
.Untuk jenis Biner, DynamoDB memperlakukan setiap byte data biner sebagai tidak bertanda ketika membandingkan nilai-nilai biner.
-
ComparisonOperator
- Sebuah pembanding untuk mengevaluasi atribut dalamAttributeValueList
. Saat melakukan perbandingan, DynamoDB menggunakan bacaan sangat konsisten.Operator perbandingan berikut ini tersedia:
EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN
Berikut adalah deskripsi setiap operator perbandingan.
-
EQ
: Sama dengan.EQ
didukung untuk semua jenis data, termasuk daftar dan peta.AttributeValueList
hanya dapat berisi satu elemenAttributeValue
berjenis String, Angka, Biner, Set String, Set Angka, atau Set Biner. Jika item berisi elemenAttributeValue
dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh,{"S":"6"}
tidak sama dengan{"N":"6"}
. Selain itu,{"N":"6"}
tidak sama dengan{"NS":["6", "2", "1"]}
. -
NE
: Tidak sama dengan.NE
didukung untuk semua set data, termasuk daftar dan peta.AttributeValueList
hanya dapat berisi satuAttributeValue
berjenis String, Angka, Biner, Set String, Set Angka, atau Set Biner. Jika item berisiAttributeValue
dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh,{"S":"6"}
tidak sama dengan{"N":"6"}
. Selain itu,{"N":"6"}
tidak sama dengan{"NS":["6", "2", "1"]}
. -
LE
: Kurang dari atau sama dengan.AttributeValueList
hanya dapat berisi satu elemenAttributeValue
berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemenAttributeValue
dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh,{"S":"6"}
tidak sama dengan{"N":"6"}
. Selain itu,{"N":"6"}
tidak sebanding dengan{"NS":["6", "2", "1"]}
. -
LT
: Kurang dari.AttributeValueList
hanya dapat berisi satuAttributeValue
berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemenAttributeValue
dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh,{"S":"6"}
tidak sama dengan{"N":"6"}
. Selain itu,{"N":"6"}
tidak sebanding dengan{"NS":["6", "2", "1"]}
. -
GE
: Lebih besar dari atau sama dengan.AttributeValueList
hanya dapat berisi satu elemenAttributeValue
berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemenAttributeValue
dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh,{"S":"6"}
tidak sama dengan{"N":"6"}
. Selain itu,{"N":"6"}
tidak sebanding dengan{"NS":["6", "2", "1"]}
. -
GT
: Lebih besar dari.AttributeValueList
hanya dapat berisi satu elemenAttributeValue
berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemenAttributeValue
dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Sebagai contoh,{"S":"6"}
tidak sama dengan{"N":"6"}
. Selain itu,{"N":"6"}
tidak sebanding dengan{"NS":["6", "2", "1"]}
. -
NOT_NULL
: Atribut ada.NOT_NULL
didukung untuk semua jenis data, termasuk daftar dan peta.catatan
Operator ini menguji keberadaan atribut, bukan jenis datanya. Jika jenis data atribut "
a
" adalah nol, dan Anda mengevaluasinya menggunakanNOT_NULL
, hasilnya adalah Booleantrue
. Hasil ini karena atribut "a
" ada; jenis data tidak relevan dengan operator perbandinganNOT_NULL
. -
NULL
: Atribut tidak ada.NULL
didukung untuk semua jenis data, termasuk daftar dan peta.catatan
Operator ini menguji tidak adanya atribut, bukan jenis datanya. Jika jenis data atribut "
a
" adalah nol, dan Anda mengevaluasinya menggunakanNULL
, hasilnya adalah Booleanfalse
. Hasil ini karena atribut "a
" ada; jenis datanya tidak relevan dengan operator perbandinganNULL
. -
CONTAINS
: Memeriksa urutan berikutnya, atau nilai dalam suatu set.AttributeValueList
hanya dapat berisi satu elemenAttributeValue
berjenis String, Angka, atau Biner (bukan jenis set). Jika atribut target perbandingan berjenis String, operator memeriksa kecocokan substring. Jika atribut target perbandingan berjenis Biner, operator mencari urutan berikutnya dari target yang cocok dengan input. Jika atribut target perbandingan adalah suatu set ("SS
", "NS
", atau "BS
"), operator bernilai true jika menemukan kecocokan sama persis dengan anggota set tersebut.CONTAINS didukung untuk daftar: Saat mengevaluasi "
a CONTAINS b
", "a
" dapat berupa sebuah daftar; tetapi, "b
" tidak dapat berupa set, peta, atau daftar. -
NOT_CONTAINS
: Memeriksa tidak adanya urutan berikutnya, atau tidak adanya nilai dalam suatu set.AttributeValueList
hanya dapat berisi satu elemenAttributeValue
berjenis String, Angka, atau Biner (bukan jenis set). Jika atribut target perbandingan adalah String, operator memeriksa tidak adanya kecocokan substring. Jika atribut target perbandingan adalah Biner, operator mencari tidak adanya urutan berikutnya dari target yang cocok dengan input. Jika atribut target perbandingan adalah suatu set ("SS
", "NS
", atau "BS
"), operator bernilai true jikadoes not
menemukan kecocokan sama persis dengan anggota set tersebut.NOT_CONTAINS didukung untuk daftar: Saat mengevaluasi "
a NOT CONTAINS b
", "a
" dapat berupa sebuah daftar; tetapi, "b
" tidak dapat berupa set, peta, atau daftar. -
BEGINS_WITH
: Memeriksa prefiks.AttributeValueList
hanya dapat berisi satuAttributeValue
berjenis String atau Biner (bukan jenis Angka atau set). Atribut target perbandingan harus berjenis String atau Biner (bukan jenis Angka atau set). -
IN
: Memeriksa elemen yang cocok dalam dua set.AttributeValueList
dapat berisi satu atau beberapa elemenAttributeValue
berjenis String, Angka, atau Biner (bukan jenis set). Atribut ini dibandingkan dengan atribut jenis set yang ada dari suatu item. Jika elemen apa pun dari set input ada dalam atribut item, ekspresi bernilai true. -
BETWEEN
: Lebih besar dari atau sama dengan nilai pertama, dan kurang dari atau sama dengan nilai kedua.AttributeValueList
harus berisi dua elemenAttributeValue
berjenis yang sama, baik String, Angka, atau Biner (bukan jenis set). Suatu atribut target cocok jika nilai target lebih besar dari, atau sama dengan, elemen pertama dan kurang dari, atau sama dengan, elemen kedua. Jika item berisi elemenAttributeValue
dengan jenis berbeda dari yang disediakan dalam permintaan, nilainya tidak cocok. Misalnya,{"S":"6"}
tidak sebanding dengan{"N":"6"}
. Selain itu,{"N":"6"}
tidak sebanding dengan{"NS":["6", "2", "1"]}
-
Parameter berikut dapat digunakan sebagai pengganti AttributeValueList
dan ComparisonOperator
:
-
Value
- Nilai untuk DynamoDB guna membandingkan dengan atribut. -
Exists
- Nilai Boolean yang menyebabkan DynamoDB mengevaluasi nilai sebelum mencoba operasi bersyarat:-
Jika
Exists
adalahtrue
, DynamoDB akan memeriksa untuk melihat apakah nilai atribut sudah ada dalam tabel. Jika ditemukan, syarat bernilai true; jika tidak, syarat akan bernilai false. -
Jika
Exists
adalahfalse
, DynamoDB mengasumsikan bahwa nilai atributnot
ada dalam tabel. Jika pada dasarnya nilai tidak ada, asumsi tersebut valid dan syarat bernilai true. Jika nilai ditemukan, terlepas dari asumsi bahwa nilai itu tidak ada, syaratnya bernilai false.
Perhatikan bahwa nilai default untuk
Exists
adalahtrue
. -
Parameter Value
dan Exists
tidak kompatibel dengan AttributeValueList
dan ComparisonOperator
. Perhatikan bahwa jika Anda menggunakan kedua set parameter sekaligus, DynamoDB akan mengembalikan pengecualian ValidationException
.
catatan
Parameter ini tidak mendukung atribut jenis Daftar atau Peta.
Gunakan ConditionExpressionsebagai gantinya - Contoh
Misalkan Anda ingin memodifikasi item dalam tabel Musik, tetapi hanya jika syarat tertentu bernilai true. Anda dapat menggunakan UpdateItem
permintaan dengan Expected
parameter, seperti dalam AWS CLI contoh ini:
aws dynamodb update-item \ --table-name Music \ --key '{ "Artist": {"S":"No One You Know"}, "SongTitle": {"S":"Call Me Today"} }' \ --attribute-updates '{ "Price": { "Action": "PUT", "Value": {"N":"1.98"} } }' \ --expected '{ "Price": { "ComparisonOperator": "LE", "AttributeValueList": [ {"N":"2.00"} ] } }'
Anda dapat menggunakan ConditionExpression
sebagai gantinya:
aws dynamodb update-item \ --table-name Music \ --key '{ "Artist": {"S":"No One You Know"}, "SongTitle": {"S":"Call Me Today"} }' \ --update-expression 'SET Price = :p1' \ --condition-expression 'Price <= :p2' \ --expression-attribute-values '{ ":p1": {"N":"1.98"}, ":p2": {"N":"2.00"} }'