支持的数据类型
本文介绍 Firestore 支持的数据类型。
数据类型
下表列出了 Firestore 支持的数据类型。它还描述了比较相同类型的值时使用的排序顺序:
数据类型 | 排列顺序 | Notes |
---|---|---|
数组 | 按元素值 |
一个数组不能包含另一个数组值作为其元素之一。 在一个数组中,元素保持在分配给它们的位置。对两个或更多个数组排序时,数组根据其元素值排序。
比较两个数组时,比较的是每个数组的第一个元素。如果第一个元素相等,则比较第二个元素,依此类推,直到找到差异。如果其中的一个数组已比较完所有元素,但到此时二者仍相等,那么较短的数组将排在较长的数组之前。 例如 |
布尔值 | false < true |
— |
字节 | 字节顺序 | 最多 1048487 字节(1 MiB - 89 字节)。查询只会考虑前 1500 个字节。 |
日期和时间 | 时间顺序 | 当存储在 Firestore 中时,仅精确到微秒;额外的精度位会被舍弃。 |
浮点数 | 数字顺序 | 64 位双精度 (IEEE 754)。 |
地理位置点 | 先按纬度排序,然后按经度 | 目前,由于查询限制,建议您不要使用此数据类型。一般来说,最好将纬度和经度作为单独的数字字段存储。如果您的应用需要基于距离的简单地理查询,请参阅地理查询 |
整数 | 数字顺序 | 64 位,有符号 |
映射 | 按键,然后按值 | 表示文档中嵌入的对象。编入索引后,您可以对子字段进行查询。如果您将此值从索引中排除,则所有子字段也将从索引中排除。
始终按键顺序进行排序。例如,如果您写入 映射字段按键排序,并与键值对进行比较(先比较键,再比较值)。如果第一个键值对相等,则比较下一个键值对,依此类推。如果两个映射具有完全相同的键值对,则考虑映射长度。例如,以下映射按升序排列:
|
NaN | 无 | — |
Null | 无 | — |
参考文档 | 按路径元素(集合、文档 ID、集合、文档 ID…) | 例如 projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH] 。 |
文本字符串 | 采用 UTF-8 编码的字节顺序 | 最多 1048487 字节(1 MiB - 89 字节)。查询只会考虑采用 UTF-8 表示法的前 1500 个字节。 |
矢量 | 按维度,然后按各个元素值 | 支持的嵌入维度上限为 2048。如需存储维度更大的矢量,请使用降维。 |
值类型排序
如果某个查询涉及的字段使用了混合类型的值,Firestore 会使用基于内部表示法的确定性排序方法。以下列表显示了该顺序:
- Null 值
- 布尔值
- NaN 值
- 整数和浮点值,按数字顺序排列
- 日期值
- 文本字符串值
- 字节值
- Firestore 参考
- 地理位置点值
- 数组值
- 向量嵌入
- 映射值