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 type

Yang 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

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.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.