MongoDB 4.0 兼容性 - Amazon DocumentDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

MongoDB 4.0 兼容性

Amazon DocumentDB 支持 MongoDB 4.0 兼容性,包括 ACID 事务。MongoDB 4.0 兼容性意味着,您目前用于 MongoDB 4.0 数据库的大部分应用程序、驱动程序和工具均可与 Amazon DocumentDB 4.0 配合使用,且只需少量更改或无需更改。本节介绍您需要了解的有关 Amazon DocumentDB 4.0 的所有信息,包括新功能和功能、入门、迁移路径和功能差异。

4.0 中的新增功能 Amazon DocumentDB

Amazon DocumentDB 4.0 推出了许多新功能,包括 ACID 事务和对变更流的改进。以下摘要介绍了 Amazon DocumentDB 4.0 中引入的一些主要功能。要查看新功能的完整列表,请参阅 发布说明

  • ACID 事务: Amazon DocumentDB 现在支持跨多个文档、语句、集合和数据库执行事务的功能。事务使您能够跨 Amazon DocumentDB 集群中的一个或多个文档执行原子、一致、隔离和持久 (ACID) 操作,从而简化应用程序开发。有关更多信息,请参阅Transactions.

  • 变更流:您现在可以在集群级别(client.watch()mongo.watch())和数据库 (db.watch()) 处打开变更流,您可以指定 startAtOperationTime 以打开变更流游标,并且最后可以将变更流保留期延长到 7 天(以前是 24 小时)。有关更多信息,请参阅将变更流与 Amazon DocumentDB 结合使用.

  • AWS Database Migration Service (AWS DMS):您现在可以使用 AWS DMS 将 MongoDB 4.0 工作负载迁移到 Amazon DocumentDB。 AWS DMS 现在支持 MongoDB 4.0 源Amazon DocumentDB、4.0 目标和 Amazon DocumentDB 3.6 源,用于执行 Amazon DocumentDB 3.6 到 4.0 之间的升级。有关更多信息,请参阅 AWS DMS 文档。

  • 性能和索引:您现在可以将索引与 结合使用$lookup,查找具有一个投影(包含一个字段或一个字段)的查询,可以直接从索引中提供_id该字段,而无需从集合中进行读取(已覆盖的查询hint())、使用 的功能findAndModify、 的性能优化$addToSet以及减少整体索引大小的改进。有关更多信息,请参阅发布说明.

  • 运算符:Amazon DocumentDB4.0 现在支持大量新的聚合运算符$ifNull:、$replaceRoot$setIsSubset$setInstersection$setUnion$setEquals。 您可以在 中查看我们支持的所有 MongoDB APIs、 操作和 数据类型支持的 MongoDB 、 APIs操作和 数据类型

  • 基于角色的访问控制 (RBAC):利用 ListCollectionListDatabase 命令,您现在可以选择使用 authorizedCollectionsauthorizedDatabases 参数,允许用户列出他们有权访问的集合和数据库,而分别无需 listCollectionslistDatabase 角色。您还可以在不需要 KillCursor 角色的情况下终止自己的游标。

Amazon DocumentDB 不支持每个 MongoDB 4.0 功能。当我们构建 Amazon DocumentDB 4.0 时,我们根据客户要求我们构建最多的功能进行反向工作。我们将根据客户要求我们构建的内容继续添加额外的 MongoDB 4.0 功能。例如Amazon DocumentDB,4.0 当前不支持 MongoDB 4.0 中引入的类型转换运算符或字符串运算符。有关支持的 的最新列表APIs,请参阅支持的 MongoDB 、 APIs操作和 数据类型

4.0 入门 Amazon DocumentDB

要开始使用 Amazon DocumentDB 4.0,请参阅 入门指南。您可以使用 Amazon DocumentDB 或 AWS 开发工具包、 AWS 管理控制台或 创建新的 AWS CLI 4.0 集群AWS CloudFormation。连接到 时Amazon DocumentDB,需要使用与 MongoDB 4.0 或更高版本兼容的MongoDB驱动程序或实用程序。

注意

使用 AWS 开发工具包、 AWS CLI或 时AWS CloudFormation,引擎版本将默认为 3.6。您必须明确指定 参数engineVersion=4.0才能创建新的 Amazon DocumentDB 4.0.0 集群。对于给定Amazon DocumentDB集群,您可以使用 AWS CLI 调用 describe-db-clusters 或使用 Amazon DocumentDB 管理控制台查看特定集群的引擎版本号来确定集群版本。

Amazon DocumentDB 4.0 支持集群的 r5t3.medium 实例类型,并在所有受支持的区域中可用。使用 Amazon DocumentDB 4.0 不会产生额外费用。有关定价的更多信息,请参阅 Amazon DocumentDB(与 MongoDB 兼容) 定价.

升级或迁移到 Amazon DocumentDB 4.0

您可以使用 或 实用程序(如 MongoDB MongoDB、Amazon DocumentDB、 和 )从 3.6 AWS DMS mongodumpmongorestore 4.0 mongoimport mongoexport迁移到 4.0。 同样,您可以使用相同的工具从 Amazon DocumentDB 3.6 升级到 Amazon DocumentDB 4.0。有关如何迁移的说明,请参阅使用 AWS Database Migration Service 将Amazon DocumentDB集群从 3.6 升级到 4.0

功能差异

Amazon DocumentDB 3.6 和 4.0 之间的功能差异

对于 Amazon DocumentDB 4.0 版本Amazon DocumentDB,3.6 和 Amazon DocumentDB 4.0 之间的功能差异如下:

  • 嵌套文档的投影:在应用投影时Amazon DocumentDB,3.6 会考虑嵌套文档中的第一个字段。但是Amazon DocumentDB,4.0 将解析子文档并将投影应用于每个子文档。例如:如果投影为 "a.b.c": 1,则两个版本中的行为相同。但是,如果投影为 {a:{b:{c:1}}} 3.6Amazon DocumentDB,则 仅将投影应用于“a”,而不应用于“b”或“c”。

  • 的行为minKey:在 maxKey 4.0 Amazon DocumentDB中, 的行为不{x:{$gt:MaxKey}}返回任何内容,而 的 {x:{$lt:MaxKey}} 将返回所有内容。

  • 文档比较差异:对子文档中(例如 中的 )不同类型(双精度、整数、长精度)的数值进行比较时, b {"_id" :1, "a" :{"b":1}}现在可跨数值数据类型和文档的每个级别提供一致的输出。

Amazon DocumentDB 4.0 和 MongoDB 4.0 之间的功能差异

下面是 Amazon DocumentDB 4.0 和 MongoDB 4.0 之间的功能差异。

  • 在路径中查找空键:当集合包含具有空键的文档(例如 {"x" : [ { "" : 10 }, { "b" : 20 } ]})并且查询中使用的键以空字符串结尾(例如 x.)时, Amazon DocumentDB 将返回该文档,因为它遍历数组中的所有文档,而 MongoDB 不会返回该文档。

  • $setOnInsert 路径$中的 和 :字段运算符$setOnInsert不能与 中的路径$中的 结合使用Amazon DocumentDB,这也与 MongoDB 4.0 一致。