Jenis data yang didukung
Halaman ini menjelaskan jenis data yang didukung Firestore.
Jenis data
Tabel berikut mencantumkan jenis data yang didukung oleh Firestore. Tabel ini juga menjelaskan tata urutan yang digunakan saat membandingkan nilai dari jenis yang sama:
| Jenis data | Tata urutan | Catatan |
|---|---|---|
| Bilangan bulat 32-bit | Angka |
32 bit, ditandai Catatan: Hanya didukung di edisi Enterprise. |
| Bilangan bulat 64-bit | Angka | 64 bit, ditandai |
| Array | Berdasarkan nilai elemen |
Dalam database edisi Standard, array tidak dapat berisi nilai array lain sebagai salah satu elemennya. Dalam database edisi Enterprise, array dapat berisi nilai array sebagai salah satu elemennya. Di dalam array, elemen mempertahankan posisi yang ditetapkan padanya. Saat mengurutkan dua array atau lebih, array tersebut diurutkan berdasarkan nilai elemennya. Ketika membandingkan dua array, elemen pertama dari setiap array akan dibandingkan. Jika elemen pertama sama, elemen kedua akan dibandingkan, dan seterusnya sampai perbedaan ditemukan. Jika array kehabisan elemen untuk dibandingkan tetapi tetap tidak ditemukan perbedaan, array yang lebih pendek akan diurutkan sebelum array yang lebih panjang. Misalnya, |
| Boolean | false < true |
— |
| Stempel waktu BSON | Kronologis |
Nilai stempel waktu 64-bit yang terdiri dari detik Unix dan penghitung inkremental. Catatan: Hanya didukung di edisi Enterprise. |
| Byte | Urutan byte | Dalam database edisi Standard, nilai tidak boleh melebihi 1.048.487 byte (1 MiB - 89 byte) dan hanya 1.500 byte pertama yang dipertimbangkan oleh kueri. Dalam database edisi Enterprise, tidak ada batasan ukuran nilai (selain batas ukuran entri dokumen dan indeks) dan nilai lengkap dipertimbangkan oleh kueri. |
| Byte dengan subjenis | Urutan byte (subjenis, lalu nilai) |
Urutan byte biner dengan indikator subjenis BSON. Catatan: Hanya didukung di edisi Enterprise. |
| Tanggal dan waktu | Kronologis | Jika disimpan di Firestore, tingkat presisinya hanya hingga mikrodetik; setiap presisi tambahan dibulatkan ke bawah. |
| Decimal128 | Angka |
Angka floating point desimal 128-bit untuk aritmetika presisi tinggi. Catatan: Hanya didukung di edisi Enterprise. |
| Angka floating-point | Numerik | Presisi ganda 64-bit sesuai dengan IEEE 754, termasuk NaN & +/-Infinity (dinormalisasi). |
| Titik geografis | Menurut lintang, lalu bujur | Untuk menelusuri berdasarkan jarak, lihat Penelusuran geospasial. |
| Peta | Berdasarkan kunci, baru kemudian nilai | Menunjukkan objek yang disematkan di dalam dokumen. Bila diindeks, Anda dapat membuat kueri pada subkolom. Jika Anda mengecualikan nilai ini dari pengindeksan, semua subkolomnya juga dikecualikan dari pengindeksan.
Urutan kunci selalu diurutkan. Misalnya, jika Anda menulis Kolom peta diurutkan berdasarkan kunci dan dibandingkan menurut key-value pair, pertama-tama kunci akan dibandingkan, kemudian nilainya. Jika key-value pair pertama sama, key-value pair berikutnya akan dibandingkan, dan seterusnya hingga ditemukan perbedaan. Jika key-value pair kedua peta sama, panjang peta akan dipertimbangkan. Misalnya, peta berikut dalam urutan menaik:
|
| Max key | Tidak ada |
Nilai khusus yang lebih tinggi dibandingkan dengan semua nilai lainnya. Catatan: Hanya didukung di edisi Enterprise. |
| Min key | Tidak ada |
Nilai khusus yang dibandingkan lebih rendah daripada semua nilai lainnya (kecuali null). Catatan: Hanya didukung di edisi Enterprise. |
| Null | Tidak ada | — |
| ObjectId | Urutan byte |
ID objek 12 byte. Catatan: Hanya didukung di edisi Enterprise. |
| Referensi | Menurut elemen jalur (koleksi, ID dokumen, koleksi, ID dokumen...) | Misalnya, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH]. |
| Ekspresi reguler | Berdasarkan pola, lalu berdasarkan opsi |
Pola dan opsi ekspresi reguler. Catatan: Hanya didukung di edisi Enterprise. |
| String teks | Urutan byte berenkode UTF-8 | Dalam database edisi Standard, nilai tidak boleh melebihi 1.048.487 byte (1 MiB - 89 byte) dan hanya 1.500 byte pertama yang dipertimbangkan oleh kueri. Dalam database edisi Enterprise, tidak ada batasan ukuran nilai (selain batas ukuran entri dokumen dan indeks) dan nilai lengkap dipertimbangkan oleh kueri. |
| Vektor | Menurut dimensi, lalu menurut nilai elemen individual | Dimensi embedding maksimum yang didukung adalah 2048. Untuk menyimpan vektor dengan dimensi yang lebih besar, gunakan pengurangan dimensi. |
Pengurutan jenis nilai
Jika kueri melibatkan kolom dengan nilai berjenis campuran, Firestore menggunakan pengurutan deterministik berdasarkan representasi internal. Daftar berikut menunjukkan urutannya:
- Nilai null
- Nilai kunci minimum (khusus edisi Enterprise)
- Nilai boolean
- Bilangan bulat 64-bit dan nilai floating point, diurutkan sesuai urutan numerik. Dalam database edisi Enterprise, nilai bilangan bulat 32-bit dan Decimal128 juga disertakan.
- Nilai tanggal
- Nilai string teks
- Nilai byte. Dalam edisi Enterprise, byte dengan nilai subjenis juga disertakan.
- Referensi Firestore
- Nilai ObjectId (khusus edisi Enterprise)
- Nilai titik geografis
- Ekspresi Reguler (khusus edisi Enterprise)
- Nilai array
- Embedding vektor
- Nilai peta
- Nilai kunci maksimum (khusus edisi Enterprise)
Pengurutan numerik
Firestore mengurutkan semua nilai numerik (Integer & Floating point)
yang saling tumpang-tindih. Perbandingan floating point mengikuti pengurutan
total IEEE 754 dengan pengecualian
yang penting yaitu Firestore menormalisasi semua nilai NaN, dan
menganggapnya kurang dari -Infinity.