支援的資料類型

本頁說明 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 中時,精確度只計算到微秒;無條件捨去任何其他精準度。
浮點數 數字 根據 IEEE 754 的 64 位元雙精確度,包括 (已正規化) NaN+/-Infinity
地理點 依照緯度再依經度 由於查詢有限制,我們目前不建議使用這個資料類型。一般來說,建議您將經緯度儲存為個別的數值欄位。如果您的應用程式需要簡單的以距離為依據的地理查詢,請參閱「地理查詢
整數 數字 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"}

空值
參考資料 依路徑元素 (集合、文件 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. 整數和浮點值,以數字順序排序
  4. 日期值
  5. 文字字串值
  6. 位元組值
  7. Cloud Firestore 參考
  8. 地理點值
  9. 陣列值
  10. 向量嵌入
  11. 對應值

依數字排序

Cloud Firestore 會將所有數值 (IntegerFloating point) 交錯排序。浮點比較會遵循 IEEE 754 的總排序,但值得注意的是,Cloud Firestore 會將所有 NaN 值標準化,並將其視為小於 -Infinity