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 Notes
Array Menurut nilai elemen

Array tidak dapat berisi nilai array lain 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
Byte Urutan byte Sampai 1.048.487 byte (1 MiB - 89 byte). Hanya 1.500 byte pertama yang dipertimbangkan oleh kueri.
Tanggal dan waktu Kronologis Jika disimpan di Firestore, presisinya hanya hingga mikrodetik; presisi tambahan apa pun akan dibulatkan ke bawah.
Angka floating-point Numerik Presisi ganda 64 bit, IEEE 754.
Titik geografis Menurut lintang, lalu bujur Saat ini kami tidak merekomendasikan penggunaan jenis data ini karena keterbatasan kueri. Umumnya lebih baik menyimpan lintang dan bujur sebagai kolom numerik terpisah. Jika aplikasi Anda memerlukan kueri geografis berbasis jarak yang sederhana, lihat Kueri geografis
Bilangan bulat Numerik 64 bit, ditandai
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. Jika dua peta memiliki semua key-value pair yang 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"}

NaN Tidak ada
Null Tidak ada
Referensi Menurut elemen jalur (koleksi, ID dokumen, koleksi, ID dokumen...) Misalnya, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
String teks Urutan byte berenkode UTF-8 Sampai 1.048.487 byte (1 MiB - 89 byte). Hanya 1.500 byte pertama dari representasi UTF-8 yang dipertimbangkan oleh kueri.
Vector Menurut dimensi, lalu menurut nilai elemen individual Dimensi penyematan maksimum yang didukung adalah 2048. Untuk menyimpan vektor dengan dimensi yang lebih besar, gunakan pengurangan dimensi.

Pengurutan jenis nilai

Saat kueri melibatkan kolom dengan nilai berjenis campuran, Firestore menggunakan pengurutan deterministik berdasarkan representasi internal. Daftar berikut menunjukkan urutannya:

  1. Nilai null
  2. Nilai boolean
  3. Nilai NaN
  4. Bilangan bulat dan nilai floating-point, diurutkan sesuai urutan numerik
  5. Nilai tanggal
  6. Nilai string teks
  7. Nilai byte
  8. Referensi Firestore
  9. Nilai titik geografis
  10. Nilai array
  11. Embedding vektor
  12. Nilai peta