获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

支持的数据类型

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本页面介绍 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 中时,精确到微秒;任何额外的精度都会向下舍入。
浮点数数字64 位双精度,IEEE 754。
地理点按纬度,然后经度由于查询限制,目前我们不建议使用此数据类型。通常最好将纬度和经度存储为单独的数字字段。如果您的应用需要简单的基于距离的地理查询,请参阅地理查询
整数数字64 位,签名
地图按键,然后按值

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

键排序总是排序的。例如,如果你写{c: "foo", a: "bar", b: "qux"}映射按键排序并保存为{a: "bar", b: "qux", c: "foo"}

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

{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 个字节。

值类型排序

当查询涉及具有混合类型值的字段时,Cloud Firestore 使用基于内部表示的确定性排序。以下列表显示了顺序:

  1. 空值
  2. 布尔值
  3. 整数和浮点值,按数字顺序排序
  4. 日期值
  5. 文本字符串值
  6. 字节值
  7. Cloud Firestore 参考资料
  8. 地理点值
  9. 数组值
  10. 映射值