Ekspresi kondisi kunci untuk operasi Query - 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

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 — true jika atribut a sama dengan nilai b

  • a < b — true jika a kurang dari b

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

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

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

  • a BETWEEN b AND c — true jika a lebih besar atau sama dengan b, dan lebih kecil 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 di DynamoDB dan Nilai atribut ekspresi.

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

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 Disimpan kata-kata di DynamoDB.) Jika nama atribut tidak memenuhi persyaratan ini, Anda harus menentukan nama atribut ekspresi sebagai placeholder. Untuk informasi selengkapnya, lihat Nama atribut ekspresi 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 tipe daya kunci urutan adalah Number, hasilnya dikembalikan dalam urutan numerik. Jika tidak, hasilnya akan 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 Pemberian nomor halaman hasil kueri tabel).