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) 操作,从而简化应用程序开发。有关更多信息,请参阅事务

  • 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 和 4.0 之间执行升级的 Amazon DocumentDB 3.6 源代码。有关更多信息,请参阅 Amazon DMS 文档

  • 性能和索引:你现在可以使用索引$lookup中,查找具有包含一个字段或一个字段的投影的查询,_id字段可以直接从索引中提供,而无需从集合中读取(覆盖的查询),hint()findAndModify,针对的性能优化$addToSet,以及减少总体指数规模的改进。有关更多信息,请参阅发行说明

  • 运算符:Amazon DocumentDB 4.0 现在支持许多新的聚合运算符:$ifNull$replaceRoot$setIsSubset$setInstersection$setUnion$setEquals. 您可以在上查看我们支持的所有 MongoDB API、操作和数据类型支持的 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 中引入的类型转换运算符或字符串运算符。有关受支持的 API 的最新列表,请参阅支持的 MongoDB API、操作和数据类型.

开始使用 Amazon DocumentDB 4.0

要开始使用 Amazon DocumentDB 4.0,请参阅入门指南. 您可 Amazon DocumentDB 使用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

您可以 Amazon DocumentDB 用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}}返回所有内容。

  • 文档比较差异:比较子文档中不同类型(double、int、long)的数值(例如,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 一致。