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

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

MongoDB 4.0 兼容

Amazon DocumentDB 支持 MongoDB 4.0 兼容性,包括 ACID 交易。MongoDB 4.0 兼容性意味着您现在已经与 MongoDB 4.0 数据库一起使用的绝大多数应用程序、驱动程序和工具都可以与 Amazon DocumentDB 4.0 一起使用,而无需更改或更改。本节介绍了您需要了解的关于 Amazon DocumentDB 4.0 的所有信息,包括新功能和功能、入门、迁移路径和功能差异。

Amazon DocumentDB 4.0 中的新增功能

Amazon DocumentDB 4.0 引入了许多新的特性和功能,其中包括 ACID 交易和对更改流的改进。下面的摘要介绍了 Amazon DocumentDB 4.0 中引入的一些主要功能。要查看新功能的完整列表,请参阅发行说明

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

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

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

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

  • 运算符:Amazon DocumentDB 4.0 现在支持许多新的聚合运算符:$ifNull$replaceRoot$setIsSubset$setInstersection$setUnion$setEquals。 您可以在以下网站查看我们支持的所有 MongoDB API、操作和数据类型:支持的 MongoDB API、操作和数据类型

  • 基于角色的访问控制(经济及社会理事会): 同时使用两种ListCollectionListDatabase命令,您现在可以选择使用authorizedCollectionsauthorizedDatabases参数,以允许用户列出他们有权访问的集合和数据库,而不需要listCollectionslistDatabase角色。您还可以杀死自己的游标,而不需要KillCursor角色。

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

开始使用 Amazon DocumentDB 4.0

要开始使用 Amazon DocumentDB 4.0,请参阅入门指南。您可以使用Amazon Web Services Management Console或Amazon开发工具包,Amazon CLI,或者Amazon CloudFormation。连接到 Amazon DocumentDB 时,您需要使用与 MongoDB 4.0 或更高版本兼容的 MongoDB 驱动程序或实用程序。

注意

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

Amazon DocumentDB 4.0 支持r5t3.medium实例类型,并在所有支持的区域中提供。使用 Amazon DocumentDB 4.0 不收取任何额外费用。有关定价的更多信息,请参阅Amazon DocumentDB(与 MongoDB 兼容)定价

升级或迁移到 Amazon DocumentDB 4.0

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

功能差异

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

  • 适用于的行为minKeymaxKey:在 Amazon DocumentDB 4.0 中,{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 库 4.0 一致。