Expected (warisan) - Amazon DynamoDB

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 pada ComparisonOperator yang sedang digunakan.

    Untuk jenis Angka, perbandingan nilainya bersifat numerik.

    Perbandingan nilai string untuk lebih besar dari, sama, atau kurang dari didasarkan pada Unicode dengan UTF -8 pengkodean biner. Sebagai contoh, a lebih besar dari A, dan a lebih besar dari B.

    Untuk jenis Biner, DynamoDB memperlakukan setiap byte data biner sebagai tidak bertanda ketika membandingkan nilai-nilai biner.

  • ComparisonOperator - Sebuah pembanding untuk mengevaluasi atribut dalam AttributeValueList. 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 elemen AttributeValue berjenis String, Angka, Biner, Set String, Set Angka, atau Set Biner. Jika item berisi elemen AttributeValue 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 satu AttributeValue berjenis String, Angka, Biner, Set String, Set Angka, atau Set Biner. Jika item berisi AttributeValue 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 elemen AttributeValue berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemen AttributeValue 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 satu AttributeValue berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemen AttributeValue 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 elemen AttributeValue berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemen AttributeValue 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 elemen AttributeValue berjenis String, Angka, atau Biner (bukan jenis set). Jika item berisi elemen AttributeValue 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 menggunakan NOT_NULL, hasilnya adalah Boolean true. Hasil ini karena atribut "a" ada; jenis data tidak relevan dengan operator perbandingan NOT_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 menggunakan NULL, hasilnya adalah Boolean false. Hasil ini karena atribut "a" ada; jenis datanya tidak relevan dengan operator perbandingan NULL.

    • CONTAINS: Memeriksa urutan berikutnya, atau nilai dalam suatu set.

      AttributeValueList hanya dapat berisi satu elemen AttributeValue 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.

      CONTAINSdidukung untuk daftar: Saat mengevaluasi "a CONTAINS b“," a "dapat berupa daftar; namun," b "tidak dapat berupa kumpulan, peta, atau daftar.

    • NOT_CONTAINS: Memeriksa tidak adanya urutan berikutnya, atau tidak adanya nilai dalam suatu set.

      AttributeValueList hanya dapat berisi satu elemen AttributeValue 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 jika does not menemukan kecocokan sama persis dengan anggota set tersebut.

      NOT_ CONTAINS didukung untuk daftar: Saat mengevaluasi "a NOT CONTAINS b“," a "dapat berupa daftar; namun," b "tidak dapat berupa kumpulan, peta, atau daftar.

    • BEGINS_WITH: Memeriksa prefiks.

      AttributeValueList hanya dapat berisi satu AttributeValue 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 elemen AttributeValue 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 elemen AttributeValue 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 elemen AttributeValue 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 adalah true, 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 adalah false, DynamoDB mengasumsikan bahwa nilai atribut not 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 adalah true.

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"} }'