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 DocumentDB 4.0 现在支持大量新的聚合运算符:$ifNull$replaceRoot$setIsSubset$setInstersection$setUnion$setEquals。 您可以在MongoDB中查看我们支持的所有 APIs 支持的 MongoDB API、操作和数据类型、操作和数据类型。

  • 基于角色的访问控制 (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 API、操作和数据类型

开始使用 Amazon DocumentDB 4.0

要开始使用 Amazon DocumentDB 4.0,请参阅入门指南。您可以使用 Amazon DocumentDB 或 AWS 开发工具包、AWS 管理控制台 或 AWS CLI 创建新的 AWS CloudFormation 4.0 集群。连接到 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

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

功能差异

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

随着 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}}},则 Amazon DocumentDB 3.6 将只将投影应用于“a”而不是“b”或“c”。

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

  • 文档比较差异:现在,比较子文档中不同类型(double、int 和 long)的数值(例如 b 中的 {"_id" :1, "a" :{"b":1}}),这会跨数值数据类型和文档的每个级别提供一致的输出。

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

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

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

  • $setOnInsert 以及路径中的 $字段运算符 $setOnInsert 将无法与 $ 中路径的 Amazon DocumentDB 结合使用,后者也与 MongoDB 4.0 一致。