现已推出具有 MongoDB 兼容性的 Firestore 企业版!
了解详情。
存储空间大小
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
仅与 Cloud Firestore 企业版相关。
|
本页面介绍了具有 MongoDB 兼容性的 Cloud Firestore 中文档、字段和索引条目所占的存储空间大小。
您可以参阅价格页面,了解此类存储的费用。
字符串大小
字符串大小的计算方式为 UTF-8 编码字节数 + 1。
以下各项以字符串形式存储:
例如:
- 集合名称
tasks
使用 5 个字节 + 1 个字节,总计 6 个字节。
- 字段名称
description
使用 11 个字节 + 1 个字节,总计 12 个字节。
字段值大小
下表显示了各种类型的字段值的大小。
类型 |
大小 |
数组 |
数组中各个值所占存储空间大小的总和 |
布尔值 |
1 个字节 |
二进制数据 |
非通用(非 0)子类型的字节长度 + 1 |
日期 |
8 个字节 |
双精度型 |
8 个字节 |
Double128 |
16 个字节 |
32 位整数 |
4 个字节 |
64 位整数 (long) |
8 个字节 |
对象 |
每个字段名称的字符串大小以及嵌入式对象中每个字段值的总和 |
最小键 |
1 个字节 |
Max 键 |
1 个字节 |
Null |
1 个字节 |
正则表达式 |
(模式长度 + 1)+(选项长度 + 1) |
时间戳 |
8 个字节 |
字符串 |
UTF-8 编码字节数 + 1 |
例如,名称为 done
的布尔值字段将使用 6 个字节:
done
字段名称为 5 个字节
- 布尔值为 1 个字节
文档大小
文档的大小是以下各项相加的总和:
以下示例针对的是集合 tasks
中的文档:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
这些字段的总大小是 78 个字节:
字段名称和值 |
字段大小(以字节为单位) |
"_id": "my_task_id" |
11(字段的字符串值) |
"type": "Personal" |
14 5(字段名称)+ 9(字段的字符串值) |
"done": false |
6 5(字段名称)+ 1(字段的布尔值) |
"priority": 1 |
17 9(字段名称)+ 4(字段的 32 位整数值) |
"description": "Learn Cloud Firestore" |
34 12(字段名称)+ 22(字段的字符串值) |
因此,文档大小为 6 + 78 + 48 = 132 字节:
- 6 表示集合名称
- 所有字段一共 78 个字节
- 额外 48 个字节
索引条目大小
索引中索引条目的大小是以下各项相加的总和:
- 集合名称的字符串大小
_id
字段值的大小
- 编入索引的字段值的总和
- 额外 48 个字节
假设 tasks
集合中有一个文档:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
对于将 done
和 priority
字段(均按升序排列)编入索引的索引,其中条目的总大小为 70 个字节:
- 集合名称
tasks
为 6 个字节
_id
字段值为 11 个字节
- 布尔字段值为 1 个字节
- 32 位整数字段值为 4 个字节
- 额外 48 个字节
对于稀疏索引,如果文档不包含任何字段,则不会创建任何索引条目。如果文档包含至少一个被索引的字段,则会创建一个索引条目,其中缺少的被索引字段设置为 NULL
。
后续步骤
了解价格。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-08-29。
[null,null,["最后更新时间 (UTC):2025-08-29。"],[],[],null,["\u003cbr /\u003e\n\n\n|--------------------------------------------------------|\n| *Relevant to Cloud Firestore Enterprise edition only.* |\n\n\u003cbr /\u003e\n\nThis page describes the storage size of documents, fields, and\nindex entries in Cloud Firestore with MongoDB compatibility.\n\nYou can learn about the costs of this storage at the [Pricing](https://firebase.google.com/pricing) page.\n\nString size\n\nString sizes are calculated as the number of [UTF-8 encoded](https://en.wikipedia.org/wiki/UTF-8) bytes + 1.\n\nThe following are stored as strings:\n\n- Collection name\n- Field names\n- String field values (including `_id`)\n\nFor example:\n\n- The collection name `tasks` uses 5 bytes + 1 byte, for a total of 6 bytes.\n- The field name `description` uses 11 bytes + 1 byte, for a total of 12 bytes.\n\nField value size\n\nThe following table shows the size of field values by type.\n\n| Type | Size |\n|-----------------------|---------------------------------------------------------------------------------------------------------|\n| Array | The sum of the sizes of its values |\n| Boolean | 1 byte |\n| Binary data | Byte length + 1 for a non-generic (non-0) subtype |\n| Date | 8 bytes |\n| Double | 8 bytes |\n| Double128 | 16 bytes |\n| 32-bit integer | 4 bytes |\n| 64-bit integer (long) | 8 bytes |\n| Object | The sum of the string sizes of each field name and the sizes of each field falue in the embedded object |\n| Min Key | 1 byte |\n| Max Key | 1 byte |\n| Null | 1 byte |\n| Regular expression | (Pattern length + 1) + (Options length + 1) |\n| Timestamp | 8 bytes |\n| String | Number of UTF-8 encoded bytes + 1 |\n\nFor example, a boolean field named `done` would use 6 bytes:\n\n- 5 bytes for the `done` field name\n- 1 byte for the boolean value\n\nDocument size\n\nThe size of a document is the sum of:\n\n- The [string size](#string-size) of the collection name\n- The sum of the [string size](#string-size) of each field name (except `_id`)\n- The sum of the size of each [field value](#field-size) (including `_id`)\n- 48 additional bytes\n\nThis example is for a document in collection `tasks`: \n\n {\n \"_id\": \"my_task_id\",\n \"type\": \"Personal\",\n \"done\": false,\n \"priority\": 1,\n \"description\": \"Learn Cloud Firestore\"\n }\n\nThe total size of the fields is 78 bytes:\n\n| Field name and value | Field size in bytes |\n|------------------------------------------|------------------------------------------------------------------|\n| `\"_id\": \"my_task_id\"` | 11 for the field's string value |\n| `\"type\": \"Personal\"` | 14 5 for the field name + 9 for the field's string value |\n| `\"done\": false` | 6 5 for the field name + 1 for the field's boolean value |\n| `\"priority\": 1` | 17 9 for the field name + 4 for the field's 32-bit integer value |\n| `\"description\": \"Learn Cloud Firestore\"` | 34 12 for the field name + 22 for the field's string value |\n\nSo the document size is 6 + 78 + 48 = 132 bytes:\n\n- 6 for the collection name\n- 78 bytes for the fields\n- 48 additional bytes\n\nIndex entry size\n\nThe size of an index entry in an index is the sum of:\n\n- The [string size](#string-size) of the collection name\n- The size of the `_id` field value\n- The sum of the indexed [field values](#field-size)\n- 48 additional bytes\n\nConsider a document in the `tasks` collection: \n\n {\n \"_id\": \"my_task_id\",\n \"type\": \"Personal\",\n \"done\": false,\n \"priority\": 1,\n \"description\": \"Learn Cloud Firestore\"\n }\n\nFor an index on the `done` and\n`priority` fields (both ascending), the total size of the index entry in this\nindex is 70 bytes:\n\n- 6 bytes for the collection name `tasks`\n- 11 bytes for the `_id` field value\n- 1 byte for the boolean field value\n- 4 bytes for the 32-bit integer field value\n- 48 additional bytes\n\nFor sparse indexes, if a document doesn't include any of the fields,\nthen no index entry is created. If a document contains at least one of the\nindexed fields, an index entry is created with absent indexed fields\nset to `NULL`.\n\nWhat's next\n\nLearn about [pricing](https://firebase.google.com/pricing)."]]