转到控制台

支持的数据类型

本文介绍 Cloud Firestore 支持的数据类型。

数据类型

下表列出了 Cloud Firestore 支持的数据类型。它还描述了比较相同类型的值时使用的排序顺序:

数据类型 排序顺序 说明
数组 按元素值

一个数组不能包含另一个数组值作为其元素之一。

在一个数组中,元素保持分配给它们的位置。对两个或多个数组排序时,数组根据其元素值排序。

比较两个数组时,会比较每个数组的最前面的元素。如果第一个元素相等,则比较第二个元素,依此类推,直到找到差异。如果一个数组耗尽要比较的元素,但它等于那个点,那么较短的数组将排在较长的数组之前。

例如,[1, 2, 3] < [1, 2, 3, 1] < [2]。数组 [2] 具有最大的第一个元素值。数组 [1, 2, 3] 具有等于 [1, 2, 3, 1] 的前三个元素但长度较短的元素。

布尔值 false < true
字节 字节顺序 最多 1048487 字节(1 MiB - 89 字节)。查询只会考虑前 1500 个字节。
日期和时间 时间顺序 当存储在 Cloud Firestore 中时,仅精确到微秒;额外的精度位会被舍弃。
浮点数 数字顺序 64 位双精度 (IEEE 754)。
地理位置点 先按纬度排序,然后按经度
整数 数字顺序 64 位,有符号
映射 按键,然后按值

表示文档中嵌入的对象。编入索引后,您可以对子字段进行查询。如果您将此值从索引中排除,则所有子字段也将从索引中排除。

始终按键顺序进行排序。例如,如果您写入 {c: "foo", a: "bar", b: "qux"},则此映射将按键排序并另存为 {a: "foo", b: "bar", c: "qux"}

映射字段按键排序,并与键值对进行比较(先比较键,再比较值)。如果第一个键值对相等,则比较下一个键值对,依此类推。如果两个映射以相同的键值对开头,则考虑映射长度。例如,以下映射按升序排列:

{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}

Null
引用 按路径元素(集合、文档 ID、集合、文档 ID…) 例如 projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH]
文本字符串 采用 UTF-8 编码的字节顺序 最多 1048487 字节(1 MiB - 89 字节)。查询只会考虑采用 UTF-8 表示法的前 1500 个字节。

值类型排序

如果某个查询涉及的字段使用了混合类型的值,Cloud Firestore 会使用基于内部表示法的确定性排序方法。以下列表显示了该顺序:

  1. Null 值
  2. 布尔值
  3. 整数和浮点值,按数字顺序排列
  4. 日期值
  5. 文本字符串值
  6. 字节值
  7. Cloud Firestore 引用
  8. 地理位置点值
  9. 数组值
  10. Map 值