| 仅与 Cloud Firestore 企业版相关。 | 
本页面介绍了与 MongoDB 兼容的 Cloud Firestore 和 MongoDB 之间的行为差异。
如需详细了解支持的功能(具体取决于 MongoDB 版本),请参阅:
连接和数据库
- 每个连接仅限于一个与 MongoDB 兼容的 Cloud Firestore 数据库。
- 必须先创建数据库,然后才能连接到该数据库。
命名
以下差异适用于数据模型的命名部分。
集合
- 不支持与 __.*__匹配的集合名称。
字段
- 不支持与 __.*__匹配的字段名称。
- 不支持空字段名称。
文档
- 文档大小上限为 4 MiB。
- 字段的嵌套深度上限为 20。每个数组和对象类型的字段都会向总深度额外添加一层深度。
_id
- 文档 _id(顶级字段)必须是 ObjectId、字符串或 64 位整数。不支持其他 BSON 类型。
- 不支持空字符串 ("") 和 64 位 0 (0L)。
值
- 不支持 JavaScript、Symbol、DBPointer 和 Undefined BSON 类型。
日期
- 日期值必须介于 [0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]之间。
Decimal128
- NaN、正无穷大和负无穷大值在写入时会进行规范化处理。
- 不支持对 Decimal128 进行算术运算。
双精度型
- NaN值在写入时会进行规范化处理。
正则表达式
- 正则表达式选项必须有效(“i”“m”“s”“u”或“x”),并且按字母顺序提供且不重复。
查询
- 自然排列顺序(没有明确排序的查询)与插入顺序或按 _id升序排列的顺序不一致。
数据汇总
- 聚合的阶段数上限为 250 个。
- 不支持 $merge和$out阶段。如需查看支持的阶段和运算符的完整列表,请参阅命令部分。
- $lookup阶段不支持- let和- pipeline字段。
写入
- 无法使用 update或findAndModify的 upsert 功能创建名称以美元符号 (“$”) 开头的文档。
- 请确保连接字符串包含 retryWrites=false(或使用适合驱动程序的方法),以确保驱动程序不会尝试使用此功能。不支持可重试写入。
交易
- 支持快照隔离和可序列化事务。 
- 默认情况下,事务结合使用乐观并发控制机制和快照隔离。 
读取关注
- 与 MongoDB 兼容的 Cloud Firestore 支持 - snapshot、- majority和- linearizable读取关注。默认值为- snapshot,表示快照隔离。- 如果应用需要严格确保一致性,并且必须防止写入偏差异常值,请使用 - linearizable。对于其他工作负载,可以使用- snapshot以提高性能并减少事务争用。
写入关注
- 仅支持 w: 'majority'和w: 1写入关注。
读取偏好设置
- 仅支持 primary、primaryPreferred、primary_preferred、secondary_preferred和nearest读取关注。
索引
- 不支持通配符索引。
- 与 MongoDB 兼容的 Cloud Firestore 不会自动在 _id上创建索引,但会确保_id的值在集合中是唯一的。
- 未启用多键的索引不会根据写入操作自动更改为多键索引。您必须在创建索引时启用多键,并且该选项无法更改。
错误
- 与 MongoDB 兼容的 Cloud Firestore 和 MongoDB 之间的错误代码和消息可能有所不同。
命令
以下行为差异适用于特定命令。
- 以下表中未列出的命令不受支持。
- 大多数命令都接受 maxTimeMS,但可能会忽略它。
查询和写入
| 命令 | 不受支持的字段 | 
|---|---|
| 
 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 
| 
 | 
 
 
 
 
 
 | 
| 
 | 
 
 | 
| 
 | 
 
 
 | 
| 
 | 
 
 在 delete 语句中: 
 
 | 
| 
 | 
 
 
 
 
 
 
 | 
| 
 | 
 
 
 
 | 
| 
 | 
 
 
 
 | 
| 
 | 
 | 
| 
 | (无) | 
事务和会话
| 命令 | 不受支持的字段 | 
|---|---|
| 
 | 
 | 
| 
 | 
 | 
| 
 | (无) | 
管理
| 命令 | 不受支持的字段 | 备注 | 
|---|---|---|
| 
 | 
 
 | 如果提供了 filter,则必须为空。 | 
| 
 | 
 | 如果提供了 authorizedCollections,则必须为 false。 | 
| 
 | 
 | |
| 
 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 此命令免操作。 如果提供了 capped,则必须为 false。 | 
后续步骤
- 运行快速入门:创建数据库并与其连接。
- 如需查看支持的功能的完整列表,请参阅支持的 MongoDB 数据类型、驱动程序和功能。