Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

支持的数据类型

本文介绍 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: "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"}

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. 映射值