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, [1, 2, 3] < [1, 2, 3, 1] < [2]. Array [2] memiliki nilai elemen pertama yang terbesar. Array [1, 2, 3] memiliki elemen yang sama dengan tiga elemen pertama dari [1, 2, 3, 1], tetapi lebih pendek.

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 {c: "foo", a: "bar", b: "qux"}, peta diurutkan berdasarkan kunci dan disimpan sebagai {a: "bar", b: "qux", c: "foo"}.

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:

{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}

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:

  1. Nilai null
  2. Nilai kunci minimum (khusus edisi Enterprise)
  3. Nilai boolean
  4. 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.
  5. Nilai tanggal
  6. Nilai string teks
  7. Nilai byte. Dalam edisi Enterprise, byte dengan nilai subjenis juga disertakan.
  8. Referensi Firestore
  9. Nilai ObjectId (khusus edisi Enterprise)
  10. Nilai titik geografis
  11. Ekspresi Reguler (khusus edisi Enterprise)
  12. Nilai array
  13. Embedding vektor
  14. Nilai peta
  15. 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.