咨询:Mongock是否支持MongoDB 2.x版本?附Spring Boot相关配置
Mongock与MongoDB 2.x版本兼容性问题
问题背景
我需要在版本为2.6.10的MongoDB服务器上执行迁移操作,当前使用的技术栈为:mongock-springboot 5.2.4、Spring Boot 2.7.2以及spring-data-mongodb 3.4.2。
我认为这可能无法实现,理由如下:
- 我发现
mongodb-springdata-v2/v3-driver均使用不支持旧版有线协议的mongodb-driver-sync。 - 在Maven仓库中,
com.github.cloudyrock.mongock下的旧版驱动均未使用支持旧版有线协议的mongo-java-driver(除了mongodb-v3-driver,但它适用于MongoDBv3版本,例如会用到读写关注点)。
请问是否可以将Mongock与MongoDB 2.x版本配合使用?
解答
Mongock 5.x系列(含你使用的5.2.4版本)无法与MongoDB 2.x版本兼容,核心原因如下:
mongodb-springdata-v2/v3-driver依赖的mongodb-driver-sync是MongoDB官方3.7版本后推出的新版驱动,仅支持MongoDB 3.0及以上的有线协议,而MongoDB 2.6使用的旧版协议与该驱动不兼容,直接使用会出现连接、操作失败等问题。- 虽然Mongock提供了
mongodb-v3-driver,但它是针对MongoDB 3.x设计的,依赖的驱动逻辑(如读写关注点)与MongoDB 2.6不匹配,强行适配会引发兼容性错误,导致迁移脚本无法正常执行。
如果必须在MongoDB 2.6.10环境下使用Mongock,唯一可行的方案是降级Mongock到3.x或更早版本:
- 这些旧版Mongock依赖支持MongoDB 2.x有线协议的
mongo-java-driver,能够兼容MongoDB 2.6版本。 - 但降级需要同步调整Spring Boot和
spring-data-mongodb的版本,确保整个技术栈的兼容性(比如Mongock 3.x通常适配Spring Boot 1.x和spring-data-mongodb1.x/2.x早期版本),这会带来额外的版本适配成本。 - 此外,旧版Mongock的功能完整性和维护状态远不如5.x系列,可能存在已知bug且不再提供更新支持。
综上,你当前的技术栈组合无法适配MongoDB 2.6.10,建议要么升级MongoDB到3.0及以上版本,要么降级Mongock及相关技术栈到兼容2.x的旧版本。
内容的提问来源于stack exchange,提问作者Filip Kowalski
相关产品推荐
相关产品推荐

