MongoDB 5.1中的兼容性变化

重要:

MongoDB 5.1是一个快速版本,仅支持MongoDB Atlas。MongoDB 5.1不支持在本地使用。有关更多信息,请参阅MongoDB版本控制。

以下5.1更改可能会影响与旧版本MongoDB的兼容性。

删除操作符

从MongoDB 5.1开始,删除这些运算符:

删除了操作符 替代品
$comment cursor.comment()
$explain cursor.explain()
$hint cursor.hint()
$max cursor.max()
$maxTimeMS cursor.maxTimeMS()
$min cursor.min()
$orderby cursor.sort()
$query Cursor Methods
$returnKey cursor.returnKey()
$showDiskLoc cursor.showRecordId()
db.getLastError() Legacy Opcodes Removed
db.getLastErrorObj() Legacy Opcodes Removed
getLastError Legacy Opcodes Removed

移除了参数

MongoDB 5.1删除了以下服务器参数:

移除了参数 描述
--tlsFIPSMode 此选项已从MongoDB社区版中删除。可在MongoDB企业版本。FIPS不是MongoDB社区版中支持的功能。如果您的安装无论如何都使用FIPS,则在升级之前,您需要重新配置TLS/SSL连接

MongoDB 5.1从mongo shell中删除了以下参数:

移除了参数 描述
--useLegacyWriteOps 移除了使用OP_INSERT、OP_UPDATE和OP_DELETE的功能。shell将仅使用OP_MSG写入命令。
--writeMode 移除了使用OP_INSERT、OP_UPDATE和OP_DELETE的功能。shell将仅使用OP_MSG写入命令。
--readMode 使用OP_QUERY遗留查找的功能被删除。shell将仅使用OP_MSG查找命令。
--rpcProtocols 删除了对OP_QUERY RPC协议的支持。shell将始终使用OP_MSG RPC协议。

$setWindowFields阶段,包含事务和快照读取问题

在5.3之前的MongoDB版本中,$setWindowFields聚合管道阶段不能与事务"snapshot"读取问题一起使用。

副本集

启动或添加碎片时,断言群集范围写入关注已设置

从MongoDB 5.1开始,在启动、重新启动或添加shard server withshsh.addShard()时,必须设置集群宽写入关注(CWWC)。

如果未设置CWWC,并且碎片配置为默认写入问题{ w : 1 },则碎片服务器将无法启动或添加,并返回错误。

有关如何计算默认写入问题的详细信息,请参阅默认写入问题计算。

rs.reconfig群集范围写入关注确认

从MongoDB 5.1开始,您必须在发布任何reconfigs前设置集群宽写入关注(CWWC),否则将更改新副本集成员的默认写入关注

仲裁员

季度快速发布版本不支持仲裁器。如果您的部署包含仲裁器,则仅使用LTS版本。

时间序列集合

警告:

如果您在MongoDB 5.1或更高版本中创建分片时间序列集合,则降级到早于MongoDB 5.0.4的版本将导致数据丢失。

在降级到早于5.0.4的版本之前,请删除所有分片时间系列集合。

一般变化

$regex查找查询 不再忽略无效的注册表达式

从MongoDB 5.1开始,无效的$regex options选项不再被忽略。此更改使$regex options与在aggregate命令和投影查询中使用$regex更加一致。

$regex架构验证错误行为

从MongoDB 5.1开始,如果集合具有包含无效$regex options模式验证规则,则服务器:

  • 阻止所有插入和更新操作,直到使用collMod命令修改包含无效正则表达式模式的模式验证规则。
  • 将警告错误写入mongod日志文件。

FIPS模式默认SCRAM-SHA-1身份验证关闭

从MongoDB 5.1开始,在FIPS模式下运行的实例默认禁用SCRAM-SHA-1身份验证机制。您可以使用setParameter.authenticationMechanisms命令启用SCRAM-SHA-1 身份验证机制

此更改不会影响面向MongoDB setFeatureCompatibilityVersion 4.0+的驱动程序。

$mod错误行为

从MongoDB 5.1(以及5.0.4和4.4.10)开始,如果divisorremainder计算为某些值,$mod运算符会返回错误。See$mod行为。

旧版操作码已删除

自MongoDB v3.6以来,MongoDB驱动程序一直使用OP_MSG而不是OP_QUERY和其他传统操作码。

此版本取消了对以下传统操作码的支持:

为了避免因删除这些操作代码而中断,请将驱动程序升级到最新版本。

mongod将关闭连接,不会响应:

mongod将返回以下错误:

OP_QUERY RPC协议可用于以下命令:

  • _isSelf
  • authenticate
  • buildinfo
  • buildInfo
  • hello
  • ismaster
  • isMaster
  • saslContinue
  • saslStart

如果用于查找操作,OP_QUERY将返回错误。如果作为OP_QUERY发出,所有其他命令都将被拒绝

如果您尝试使用MongoDB 5.1或更新的mongo shell连接到MongoDB 3.4或更早版本的mongod实例,您将收到如下错误消息:

Connection handshake failed. Is your mongod 3.4 or older?
:: caused by :: network error while attempting to run command
'isMaster' on host '127.0.0.1:27017'

平台支持

从MongoDB 5.1.2开始,不再支持以下平台。

社区版

  • RHEL-72-s390x

原文:Compatibility Changes in MongoDB 5.1

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""