Bisakah DynamoDB memiliki nilai null?
Ya. DynamoDB memiliki tipe NULL khusus yang mewakili atribut dengan status tidak diketahui atau tidak ditentukan. Ini juga mengizinkan string kosong dan nilai biner kosong untuk atribut non-kunci, ditambah daftar dan peta kosong. Itu tidak mengizinkan set kosong (string, angka, atau biner), yang ditolak dengan ValidationException.
Tipe NULL
NULL adalah tipe atribut nyata, ditulis sebagai {"NULL": true}. Gunakan ini ketika Anda ingin mencatat bahwa suatu bidang ada tetapi tidak memiliki nilai — berbeda dengan sekadar menghilangkan atribut.
Kekosongan apa yang diperbolehkan
- String kosong/biner kosong — diperbolehkan pada atribut non-kunci, serta di dalam daftar dan peta.
- Daftar kosong / peta kosong — diperbolehkan.
Apa yang tidak diperbolehkan
- Set kosong (SS, NS, BS) — ditolak dengan
ValidationException. - String atau biner kosong pada atribut kunci — nilai kunci harus memiliki panjang lebih dari nol.
Seperti apa penolakannya
Satu PutItem menerima {"NULL": true}, {"S": ""}, {"L": []}, {"M": {}} dan {"B": ""} nol-byte dalam item yang sama, dan GetItem mengembalikan kelimanya tanpa perubahan. Ketiga tulisan ini tidak bertahan. Pesan-pesan tersebut adalah milik mesin, dibungkus agar pas dan selebihnya tidak tersentuh, termasuk salah ketiknya:
tags: {"SS": []}
ValidationException: One or more parameter values were invalid:
An string set may not be empty
pk: {"S": ""}
ValidationException: One or more parameter values are not valid.
The AttributeValue for a key attribute cannot contain an empty
string value. Key: pk
gsiKey: {"NULL": true}
ValidationException: Invalid attribute value typeYang ketiga adalah jebakannya. Anda tidak dapat membatalkan kunci indeks untuk menjaga item keluar dari indeks renggang: seluruh penulisan ditolak, jadi satu-satunya cara untuk membiarkan item tidak diindeks adalah dengan menghilangkan atributnya.
NULL dihitung sebagai ada
Setiap filter memperlakukan atribut NULL sebagai ada. Memindai item di atas dengan attribute_exists(explicitNull) akan mengembalikannya, begitu pula explicitNull = :n dengan :n disetel ke {"NULL": true}, dan attribute_type(explicitNull, "NULL"). Hanya attribute_not_exists yang memisahkan "secara eksplisit null" dari "tidak disimpan".
Tip pemodelan
Menghilangkan atribut seluruhnya sering kali lebih bersih daripada menyimpan NULL, dan ini memungkinkan indeks yang jarang. Pilih berdasarkan apakah "tidak ada" dan "secara eksplisit nol" memiliki arti yang berbeda dalam model Anda.
Membangun filter di sekitar NULL
Ekspresi filter memperlakukan NULL sebagai hadiah. Untuk menemukan item dengan null eksplisit, gunakan attribute_type(attr, 'NULL') atau bandingkan :n dengan {"NULL": true}. Untuk mengecualikannya, gunakan attribute_not_exists atau uji untuk tipe konkret seperti attribute_type(attr, 'S'), bergantung pada model Anda.
Pembuat Ekspresi menghasilkan peta name/value untuk filter attribute_exists dan attribute_not_exists sehingga Anda dapat memeriksa kewarasan Pemindaian sebelum membayarnya.
Di DynoTable: editor item menulis atribut NULL di ketiga mode JSON. Buka baris, setel bidang ke nol, dan lakukan perubahan untuk ditinjau sebelum diterapkan. Lihat Mengedit item.
Pelajari lebih lanjut
Baca tipe data DynamoDB dan indeks renggang. Unduh DynoTable untuk mengedit atribut, termasuk NULL, secara langsung.
Referensi
- Tipe data dan aturan penamaan yang didukung di Amazon DynamoDB — Panduan Pengembang Amazon DynamoDB
- Kendala di Amazon DynamoDB — Panduan Pengembang Amazon DynamoDB
- PutItem — Referensi Amazon DynamoDB API
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.
Direproduksi 28-07-2026 terhadap DynamoDB Lokal 3.3.0 melalui @aws-sdk/client-dynamodb 3.1095.0 — string kesalahan dan hasil filter di atas adalah keluaran mesin kata demi kata. Layanan langsung dapat membuat kata ValidationException berbeda dari mesin lokal.