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协议可用于以下命令:
_isSelfauthenticatebuildinfobuildInfohelloismasterisMastersaslContinuesaslStart
如果用于查找操作,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