Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Expected (warisan)
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 padaComparisonOperatoryang 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,
alebih besar dariA, danalebih 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 | BETWEENBerikut adalah deskripsi setiap operator perbandingan.
-
EQ: Sama dengan.EQdidukung untuk semua jenis data, termasuk daftar dan peta.AttributeValueListhanya dapat berisi satu elemenAttributeValueberjenis String, Angka, Biner, Set String, Set Angka, atau Set Biner. Jika item berisi elemenAttributeValuedengan 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.NEdidukung untuk semua set data, termasuk daftar dan peta.AttributeValueListhanya dapat berisi satuAttributeValueberjenis String, Angka, Biner, Set String, Set Angka, atau Set Biner. Jika item berisiAttributeValuedengan 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.AttributeValueListhanya dapat berisi satu elemenAttributeValueberjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemenAttributeValuedengan 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.AttributeValueListhanya dapat berisi satuAttributeValueberjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemenAttributeValuedengan 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.AttributeValueListhanya dapat berisi satu elemenAttributeValueberjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemenAttributeValuedengan 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.AttributeValueListhanya dapat berisi satu elemenAttributeValueberjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemenAttributeValuedengan 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_NULLdidukung 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.NULLdidukung 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.AttributeValueListhanya dapat berisi satu elemenAttributeValueberjenis 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.AttributeValueListhanya dapat berisi satu elemenAttributeValueberjenis 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 notmenemukan 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.AttributeValueListhanya dapat berisi satuAttributeValueberjenis 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.AttributeValueListdapat berisi satu atau beberapa elemenAttributeValueberjenis 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.AttributeValueListharus berisi dua elemenAttributeValueberjenis 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 elemenAttributeValuedengan 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
Existsadalahtrue, DynamoDB akan memeriksa untuk melihat apakah nilai atribut sudah ada dalam tabel. Jika ditemukan, syarat bernilai true; jika tidak, syarat akan bernilai false. -
Jika
Existsadalahfalse, DynamoDB mengasumsikan bahwa nilai atributnotada 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
Existsadalahtrue. -
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"} }'