

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
<a name="Query.KeyConditionExpressions"></a>

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](ReservedWords.md).) 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](Expressions.ExpressionAttributeNames.md).

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 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 [Hasil query tabel paginasi di DynamoDB](Query.Pagination.md)).

## Contoh ekspresi kondisi kunci
<a name="Query.KeyConditionExpressions-example"></a>

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`— benar *a* jika 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*b*, dan 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](Expressions.ExpressionAttributeNames.md) dan [Menggunakan nilai atribut ekspresi di DynamoDB](Expressions.ExpressionAttributeValues.md).

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

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

**Example**  
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"}
}
```

**Example**  
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"}
}
```