支援的資料類型

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

資料類型

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

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

在標準版資料庫中,陣列不得包含另一個陣列值做為其中一個元素。在 Enterprise 版資料庫中,陣列可以包含陣列值做為其中一個元素。

在陣列中,元素會維持所指派的位置。 排序兩個以上的陣列時,系統會根據元素值排序陣列。

比較兩個陣列時,系統會比較每個陣列的第一個元素。如果第一個元素相等,則會比較第二個元素,依此類推,直到找到差異為止。如果陣列比較的元素用盡,但到目前為止都相等,則較短的陣列會排在較長的陣列之前。

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

布林值 false < true —
位元組數 位元組順序 在 Standard 版資料庫中,值不得超過 1,048,487 個位元組 (1 MiB - 89 個位元組),且查詢只會考量前 1,500 個位元組。在 Enterprise 版資料庫中,值的大小沒有限制 (文件和索引項目大小限制除外),查詢會考量完整值。
日期與時間 依時間順序 儲存在 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 編碼的位元組順序 在 Standard 版資料庫中,值不得超過 1,048,487 個位元組 (1 MiB - 89 個位元組),且查詢只會考量前 1,500 個位元組。在 Enterprise 版資料庫中,值的大小沒有限制 (文件和索引項目大小限制除外),查詢會考量完整值。
向量 依維度,然後依個別元素值 支援的嵌入維度上限為 2048。如要儲存維度較大的向量,請使用降維。

值類型排序

當查詢的欄位具有混和類型的值時,Cloud Firestore 會根據內部表示法來決定如何排序。下列清單說明順序:

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

依數字排序

Cloud Firestore 會將所有數值 (Integer 和 Floating point) 相互交錯排序。浮點比較會遵循 IEEE 754 的總排序,但值得注意的例外狀況是,Cloud Firestore 會將所有 NaN 值正規化,並視為小於 -Infinity。