受支持的数据类型
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
本文介绍 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"}
|
NaN |
无 |
— |
Null |
无 |
— |
引用 |
按路径元素(集合、文档 ID、集合、文档 ID…) |
例如 projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH] 。 |
文本字符串 |
采用 UTF-8 编码的字节顺序 |
最多 1048487 字节(1 MiB - 89 字节)。查询只会考虑采用 UTF-8 表示法的前 1500 个字节。 |
矢量 |
先按维度,然后按各个元素值 |
支持的嵌入维度上限为 2,048。要在向量中存储更高的维度,可使用降维。 |
值类型排序
如果某个查询涉及的字段使用了混合类型的值,Cloud Firestore 会使用基于内部表示法的确定性排序方法。以下列表显示了该顺序:
- Null 值
- 布尔值
- NaN 值
- 整数和浮点值,按数字顺序排列
- 日期值
- 文本字符串值
- 字节值
- Cloud Firestore 引用
- 地理位置点值
- 数组值
- 向量嵌入
- 映射值
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-07-10。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2024-07-10\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2024-07-10。"]]