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
的模式验证规则,则服务器:
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)开始,如果divisor
或remainder
计算为某些值,$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