支援的資料類型

本頁面說明 Cloud Firestore 支援的資料類型。

資料類型

下表列出 Cloud Firestore 支援的資料類型。同時也說明比較相同類型值時使用的排序順序:

資料類型 排序順序 附註
陣列 依元素值

陣列中的元素不得含有另一個陣列值。

在陣列中,元素會保留指派給該元素的位置。排序兩個以上的陣列時,系統會依據陣列的元素值排序陣列。

比較兩個陣列時,系統會比較每個陣列的第一個元素。如果第一個元素相同,則系統會比較第二個元素,以此類推,直到找出差異為止。如果陣列達到要比較的元素數量,但與所比較的點相同,則較短的陣列會排序在較長陣列之前。

例如 [1, 2, 3] < [1, 2, 3, 1] < [2]。陣列 [2] 的第一個元素值最大。陣列 [1, 2, 3] 的元素與 [1, 2, 3, 1] 的前三個元素相同,但長度較短。

布林值 false < true
位元組 位元組順序 最多 1,048,487 個位元組 (1 MiB - 89 個位元組)。查詢只會考量前 1,500 個位元組。
日期與時間 依時間順序 儲存在 Cloud Firestore 中時,精確度只計算到微秒;無條件捨去任何其他精準度。
浮點數 數字 64 位元雙精度,IEEE 754
地理點 先按緯度,再依照經度 由於查詢功能有限制,我們目前不建議使用這類資料類型。一般來說,建議您將經緯度儲存為個別的數值欄位。如果您的應用程式需要簡單的以距離為依據的地理查詢,請參閱「地理查詢
整數 數字 64 位元,帶正負號
地圖 依鍵排序,然後依值排序

代表文件中嵌入的物件。建立索引後,您可以查詢子欄位。如果從索引中排除這個值,系統也會排除所有子欄位。

金鑰順序一律為排序。舉例來說,如果您寫入 {c: "foo", a: "bar", b: "qux"},系統會依鍵排序地圖,並儲存為 {a: "bar", b: "qux", c: "foo"}

地圖欄位會依鍵排序,並以鍵/值組合進行比較,先比較鍵,再比較值。如果第一個鍵/值組合相等,系統會比較下一個鍵/值組合,以此類推。如果兩個對應表的所有鍵/值組合都相同,系統會考量對應表長度。舉例來說,以下地圖是按遞增順序排列:

{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
空值
參考資料 依路徑元素 (集合、文件 ID、集合、文件 ID...) 例如 projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH]
文字字串 UTF-8 編碼位元組順序 最多 1,048,487 個位元組 (1 MiB - 89 個位元組)。查詢只會考量 UTF-8 表示法的前 1,500 個位元組。
向量 依維度和個別元素值排序 支援的嵌入維度上限為 2048。如要儲存維度較大的向量,請使用降維

值類型排序

查詢含混合類型值的欄位時,Cloud Firestore 會根據內部表示法使用確定性排序。以下是排序清單:

  1. 空值
  2. 布林值
  3. NaN 值
  4. 整數和浮點值,以數字順序排序
  5. 日期值
  6. 文字字串值
  7. 位元組值
  8. Cloud Firestore 個參考資料
  9. 地理點值
  10. 陣列值
  11. 向量嵌入
  12. 對應值