Ekspresi kondisi kunci untuk operasi Query di DynamoDB - Amazon DynamoDB

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

Ekspresi kondisi kunci untuk operasi Query di DynamoDB

Anda dapat menggunakan nama atribut apa pun dalam ekspresi kondisi kunci, asalkan karakter pertama adalah a-z atau A-Z dan karakter lainnya (mulai dari karakter kedua, jika ada) adalah a-z, A-Z, or 0-9. Selain itu, nama atribut tidak boleh berupa kata khusus DynamoDB. (Untuk daftar lengkapnya, lihat Kata-kata penggunaan khusus di DynamoDB.) Jika nama atribut tidak memenuhi persyaratan ini, Anda harus menentukan nama atribut ekspresi sebagai placeholder. Untuk informasi selengkapnya, lihat Nama atribut ekspresi (alias) di DynamoDB.

Untuk item dengan nilai kunci partisi tertentu, DynamoDB menyimpan item ini berdekatan, dalam urutan berdasarkan nilai kunci urutan. Dalam operasi Query, DynamoDB mengambil item dalam urutan yang diurutkan, lalu memproses item menggunakan KeyConditionExpression dan FilterExpression apa pun yang mungkin ada. Baru setelah itu hasil Query dikirim kembali ke klien.

Operasi Query selalu mengembalikan kumpulan hasil. Jika tidak ditemukan item yang cocok, set hasil kosong.

Hasil Query selalu diurutkan berdasarkan nilai kunci urutan. Jika jenis daya kunci urutan adalah Number, hasilnya dikembalikan dalam urutan numerik. Jika tidak, hasilnya dikembalikan dalam urutan UTF -8 byte. Secara default, urutannya menaik. Untuk membalikkan urutan, atur parameter ScanIndexForward ke false.

Operasi Query tunggal dapat mengambil data maksimum 1 MB. Batas ini berlaku sebelum FilterExpression atau ProjectionExpression diterapkan pada hasil. Jika LastEvaluatedKey ada dalam respons dan bukan null, Anda harus memberi nomor halaman pada kumpulan hasil (lihat Hasil query tabel paginasi di DynamoDB).

Contoh ekspresi kondisi kunci

Untuk menentukan kriteria pencarian, Anda menggunakan ekspresi kondisi kunci—string yang menentukan item yang akan dibaca dari tabel atau indeks.

Anda harus menentukan nama dan nilai kunci partisi sebagai syarat kesetaraan. Anda tidak dapat menggunakan atribut bukan kunci dalam ekspresi kondisi kunci.

Anda juga dapat memberikan kondisi kedua untuk kunci urutan (jika ada). Kondisi kunci urutan harus menggunakan salah satu operator perbandingan berikut:

  • a = b— benar jika atribut a sama dengan nilai b

  • a < b— benar jika a kurang dari b

  • a <= b— benar jika a kurang dari atau sama dengan b

  • a > b— benar jika a lebih besar dari b

  • a >= b— benar jika a lebih besar dari atau sama dengan b

  • a BETWEEN b AND c— benar jika a lebih besar dari atau sama dengan bdan kurang dari atau sama dengan c.

Fungsi berikut ini juga didukung:

  • begins_with (a, substr)— true jika nilai atribut a dimulai dengan substring tertentu.

Contoh berikut AWS Command Line Interface (AWS CLI) menunjukkan penggunaan ekspresi kondisi kunci. Ekspresi ini menggunakan placeholder (seperti :name dan :sub) dan bukan nilai aktual. Untuk informasi selengkapnya, lihat Nama atribut ekspresi (alias) di DynamoDB dan Menggunakan nilai atribut ekspresi di DynamoDB.

contoh

Ajukan kueri tabel Thread untuk ForumName (kunci partisi) tertentu. Semua item dengan nilai ForumName tersebut dibaca oleh kueri karena kunci urutan (Subject) tidak termasuk dalamKeyConditionExpression.

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name" \ --expression-attribute-values '{":name":{"S":"Amazon DynamoDB"}}'
contoh

Ajukan kueri tabel Thread untuk ForumName kunci partisi), tetapi kali ini hanya mengembalikan item dengan Subject(kunci urutan) tertentu.

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name and Subject = :sub" \ --expression-attribute-values file://values.json

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

{ ":name":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"} }
contoh

Kueri tabel Reply untuk Id tertentu (kunci partisi), tetapi hanya kembalikan item yang ReplyDateTime (kunci urutan) dimulai dengan karakter tertentu.

aws dynamodb query \ --table-name Reply \ --key-condition-expression "Id = :id and begins_with(ReplyDateTime, :dt)" \ --expression-attribute-values file://values.json

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

{ ":id":{"S":"Amazon DynamoDB#DynamoDB Thread 1"}, ":dt":{"S":"2015-09"} }