2017-10-18 35 views
1

我是使用MongoDB的C++项目的开发人员。特别是,我们在驱动程序legacy-1.1.x中使用MongoDB 3.2。我们有大约2000次测试(单元测试和黑盒测试之间)的测试回归套件,其中大部分都会触发与MongoDB服务器的交互。MongoDB C++ legacy-1.1.x与MongoDB的兼容性3.4

我们已经测试了改变MongoDB服务器,从3.2。到3.4。我们用3.4运行测试套件,所有测试都没有任何问题。

这似乎是个好消息。但是,期待MongoDB C++ driver documentation我看到legacy-1.1.x驱动程序与MongoDB 3.4不兼容。

所以我想,为什么我的代码(所有〜2000年回归测试)工作?也许文档中的兼容性矩阵是推荐的设置,但它不是强制性的?或者,在MongoDB 3.4中使用一些我的代码没有使用的新功能(考虑到MongoDB 3.2的功能设计考虑了MongoDB 3.2),可能会引发不兼容性问题?

+1

有一个[所有驱动程序通用矩阵(https://docs.mongodb.com/ecosystem/drivers/driver-compatibility-reference/),当然是一个[特定C++部(HTTPS://文档.mongodb.com /生态系统/驱动程序/驱动程序的兼容性的参考/#基准兼容性mongodb的-CPP)。实际上不应该有任何重大改变,它更多的是引入了“功能”(Decimal128,排序感知方法)。 “不兼容”的具体原因是因为这些“新功能”可能存在于数据库中(特别是Decimal128 BSON),驱动程序不支持该功能并且会将其破坏。 –

回答

2

该矩阵应该被理解为“推荐”。正如你所建议的那样,有一些MongoDB 3.4功能无法通过传统驱动程序访问,并且没有计划添加支持。但是,如果您的测试不需要任何3.4功能,驾驶员将继续按设计工作,我不会觉得奇怪。

但是,我不能建议强烈,以至于你尽快升级到新的mongocxx驱动程序。传统驱动程序仅进行重要的修补程序修补程序,并且会尽快前往EOL。

新的驱动程序提供了一个更好的编程模型,具有现代MongoDB的驱动器的设计和原则符合,并且将更新为表达一个持续的基础上进行新的数据库功能的支持。