本頁說明 Cloud Firestore 支援的資料類型。
資料類型
下表列出 Cloud Firestore 支援的資料類型。此外,本文也說明比較相同類型的值時所用的排序順序:
| 資料類型 | 排列順序 | 附註 |
|---|---|---|
| 陣列 | 依元素值 |
陣列不能包含其他陣列值做為元素。 在陣列中,元素會維持指派給自己的位置。 排序兩個以上的陣列時,系統會根據元素值排序陣列。 比較兩個陣列時,系統會比較每個陣列的第一個元素。如果第一個元素相等,則會比較第二個元素,依此類推,直到找到差異為止。如果陣列比較的元素用盡,但到目前為止都相等,則較短的陣列會排在較長的陣列之前。 例如 |
| 布林值 | false < true |
— |
| 位元組 | 位元組順序 | 最多 1,048,487 個位元組 (1 MiB - 89 個位元組)。查詢只會考量前 1,500 個位元組。 |
| 日期與時間 | 依時間順序 | 儲存在 Cloud Firestore 中時,精確度只計算到微秒;無條件捨去任何其他精準度。 |
| 浮點數 | 數字 | 根據 IEEE 754 的 64 位元雙精確度,包括 (正規化) NaN 和 +/-Infinity。 |
| 地理點 | 先按緯度再按經度 | 目前不建議使用這類資料,因為查詢功能有限。一般來說,建議將經緯度儲存為個別的數值欄位。如果應用程式需要簡單的距離型地理查詢,請參閱「地理查詢」。 |
| 整數 | 數字 | 64 位元,帶正負號 |
| 地圖 | 依據鍵,然後依據值 | 代表文件中嵌入的物件。如有建立索引,可以查詢子欄位。若在建立索引時排除此值,也會一併排除所有子欄位。
鍵的順序一律會經過排序。舉例來說,如果您寫入
地圖欄位會依鍵排序,並依鍵/值組合比較,先比較鍵,再比較值。如果第一個鍵/值組合相等,系統會比較下一個鍵/值組合,依此類推。如果兩個對應具有所有相同的鍵/值配對,系統會考量對應長度。舉例來說,下列地圖是按遞增順序排列:
|
| 空值 | 無 | — |
| 參考資料 | 按路徑元素 (集合、文件 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 會根據內部表示法使用確定性排序。以下是排序清單:
- 空值
- 布林值
- 整數和浮點值,依數值順序排序
- 日期值
- 文字字串值
- 位元組值
- Cloud Firestore 參照
- 地理點值
- 陣列值
- 向量嵌入
- 對應值
依數字排序
Cloud Firestore 會排序所有數值 (Integer 和 Floating point),
並將兩者交錯排列。浮點比較會遵循 IEEE 754 的總排序,但值得注意的例外是 Cloud Firestore 會將所有 NaN 值正規化,並視為小於 -Infinity。