Docs 菜单
Docs 主页
/ / /
C++ 驱动程序

升级驱动程序版本

在此页面上

  • Overview
  • 重大更改的定义
  • 重大更改的类型
  • 重大更改
  • 版本 4.0
  • 版本 3.11
  • 版本 3.10
  • 版本 3.9
  • 3.8及更早版本

本页介绍了升级到新版本的C++驾驶员程序时必须对应用程序进行的更改。

升级前,请执行以下操作:

  • 确保新的C++驾驶员版本与应用程序连接到的MongoDB Server版本以及编译应用程序时使用的C++标准版本兼容。 有关版本兼容性信息,请参阅 C++驾驶员兼容性页面。

  • 重大更改部分中,解决应用程序正在使用的驾驶员版本与计划升级版本之间发生的任何重大更改。

提示

为了确保在升级驾驶员版本时跨MongoDB Server版本的兼容性,请使用Stable API。

注意

C++驾驶员遵循语义版本控制。该驾驶员可能会破坏任何发布中的构建系统或包兼容性。 补丁版本可能会恢复意外的API重大更改。

有关更多信息,请参阅API和 ABI 版本控制。

重大更改是对从特定版本的驱动程序开始的约定或行为的更改。 如果在升级驱动程序之前未解决,此类更改可能会导致应用程序无法正常工作。

本部分中的破坏性变更 (breaking change) 按引入它们的驱动程序版本进行分类。升级驱动程序版本时,请解决当前版本和升级版本之间的所有破坏性变更 (breaking change)。

例子

升级到版本 4.0

如果您要将C++驾驶员从版本 3.x 升级到版本 4.0,请解决版本 3.x 到版本 4.0 列出的所有重大更改

新版本的C++驾驶员可能会引入以下类型的重大更改:

  • API更改涉及C++驾驶员库的API 。 这些更改伴随着API主要版本的提升。 您可能需要在项目中编辑C++源代码以解决这些更改。

    例子

    • 删除函数 v1::func()的声明。 (为了实现 ABI 兼容性,仍提供该定义。)

    • 删除内联函数v_noabi::func()

    • 删除v_noabi::func()

    • bsoncxx::foo的重新声明从v1::foo更改为v2::foo 。 要继续使用旧接口,请将bsoncxx::foo限定为bsoncxx::v1::foo

  • ABI更改涉及C++驾驶员库的 ABI。 这些更改伴随着 ABI 版本提升,也可能伴随着API主要版本提升。 您可能需要重新构建项目或编辑C++源代码以解决这些更改。

    v_noabi命名空间中声明的实体对应的符号支持 ABI 稳定性。 此类符号的重大更改不一定伴随着 ABI 版本提升。

    例子

    • 删除导出的符号v_noabi::func()

    • 删除导出的符号v1::func()

    • 删除v1::type的导出符号。

  • 构建系统更改涉及C++驾驶员库的构建系统或打包。 这些更改不一定伴随着API主要版本提升或 ABI 版本提升。 要解决这些更改,您可能需要修改构建系统配置或更新项目的包或依赖项管理设置。 您可能还需要修改或重新构建C++源代码。

    例子

    • 删除ENABLE_FOO配置变量。

    • ENABLE_BAR配置变量的默认值从OFF更改为ON

    • 删除支持平台 A、编译器 B 或架构C的支持。

以下部分介绍了每个驾驶员发布引入的重大更改。

v 4.0驾驶员对构建系统进行了以下重大更改:

  • 删除支持Boost 和 MNMLSTC/core 外部 polyfill 库的支持。您不能再设立以下配置选项:

    • ENABLE_BSONCXX_POLY_USE_IMPLS。此选项隐式设立为 ON

    • BSONCXX_POLY_USE_MNMLSTC.

    • BSONCXX_POLY_USE_SYSTEM_MNMLSTC.

    • BSONCXX_POLY_USE_BOOST.

  • 删除支持MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX 配置选项的支持。现在,CMAKE_INSTALL_PREFIX 的默认 CMake 行为受到尊重。

  • 默认将 ENABLE_TESTS 配置选项设置为 OFF。要重新启用构建测试目标,必须设立ENABLE_TESTS 设置为 ON。要在“all”目标中包含测试目标,还必须设立BUILD_TESTING 选项设置为 ON

v 4.0驾驶员对API进行了以下重大更改:

  • 不再支持将bsoncxx::stdx::string_viewbsoncxx::stdx::optional<T> 配置为 Boost 或 MNMLSTC/core 库等效项的别名。有关上下文,请参阅“构建系统重大更改”部分。

  • 删除以下头文件:

    • <bsoncxx/stdx/make_unique.hpp>

    • <bsoncxx/types/value.hpp>

    • <bsoncxx/util/functor.hpp>

    • <mongocxx/options/create_collection.hpp>

  • 删除以下已弃用的具有 string 等效项的 utf8 类型和函数:

    • k_utf8 来自 bsoncxx::v_noabi::type 类。请改用 k_string

    • b_utf8 来自 bsoncxx::v_noabi::types 类。请改用 b_string

    • get_utf8() 来自 bsoncxx::v_noabi::document::elementbsoncxx::v_noabi::array::elementbsoncxx::v_noabi::types::bson_value::view 类。请改用 get_string()

    • k_cannot_append_utf8 来自 bsoncxx::v_noabi::exception::error_code 类。请改用 k_cannot_append_string

    • k_need_element_type_k_utf8 来自 bsoncxx::v_noabi::exception::error_code 类。请改用 k_need_element_type_k_string

  • 删除 mongocxx::stdx命名空间。在代码中替换以下类型:

    • mongocxx::stdx::optional<T>。请改用 bsoncxx::stdx::optional<T>

    • mongocxx::stdx::string_view。请改用 bsoncxx::stdx::string_view

  • 删除以下未记录的 using 指令和声明:

    • bsoncxx::builder::types 来自 <bsoncxx/builder/list.hpp> 头文件。请改用 <bsoncxx/types.hpp> 中的 bsoncxx::types

    • bsoncxx::builder::stream::concatenate 来自 <bsoncxx/builder/stream/helpers.hpp> 头文件。请改用 <bsoncxx/builder/concatenate.hpp> 中的 bsoncxx::builder::concatenate

    • mongocxx::events::read_preference 来自 <mongocxx/events/topology_description.hpp> 头文件。请改用 <mongocxx/read_preference.hpp> 中的 mongocxx::read_preference

v 4.0驾驶员对 ABI 进行了以下重大更改:

  • 不再支持将bsoncxx::stdx::string_viewbsoncxx::stdx::optional<T> 配置为 Boost 或 MNMLSTC/core 库等效项的别名。有关上下文,请参阅“构建系统重大更改”部分。

  • 删除具有utf8 等效项的已弃用string 函数。有关这些更改的完整列表,请参阅“ API重大更改”部分。

v 3.11驾驶员对构建系统进行了以下重大更改:

  • 删除了对MongoDB Server v 3.6的支持。

  • 需要MongoDB C驱动程序v 1.28.0或更高版本。

  • 如果 ENABLE_TESTS 配置选项设立为 ON,则需要C++ 14 或更高版本。您可以在 CMake 配置期间通过 ENABLE_TESTS=OFF 禁用测试,从而选择退出C++ 14 要求。

v 3.11驾驶员对 ABI 进行了以下重大更改:

  • 删除 bsoncxx ABI 中以下私有成员函数的导出:

    bsoncxx::v_noabi::types::bson_value::value::value(const uint8_t*, uint32_t, uint32_t, uint32_t)
    bsoncxx::v_noabi::types::bson_value::view::_init(void*)
    bsoncxx::v_noabi::types::bson_value::view::view(const uint8_t*, uint32_t, uint32_t, uint32_t)
    bsoncxx::v_noabi::types::bson_value::view::view(void*)
  • 删除 mongocxx ABI 中以下私有成员函数的导出:

    mongocxx::v_noabi::options::change_stream::as_bson()
    mongocxx::v_noabi::options::aggregate::append(bsoncxx::v_noabi::builder::basic::document&)
    mongocxx::v_noabi::options::index::storage_options()
  • 使用 MSVC 编译时,使用__cdecl声明所有导出函数符号。 如果您在构建项目时使用替代的默认调用约定,则这是一项 ABI破坏性变更 (breaking change)。

v 3.10驾驶员对构建系统进行了以下重大更改:

  • 不再支持调用find_package(libbsoncxx)find_package(libmongocxx) 。 请改用find_package(bsoncxx)find_package(mongocxx)

  • 删除支持旧版 CMake包配置文件提供的LIBBSONCXX_*LIBMONGOCXX_* CMake 变量的支持。 请改用mongo::bsoncxx_*mongo::mongocxx_* CMake 目标。

  • 删除了BSONCXX_POLY_USE_STD_EXPERIMENTAL CMake 选项,并删除了对选择实验性C++标准库作为 polyfill 选项的支持。

v 3.9驾驶员引入了以下重大更改:

  • 删除了对 CMake项目构建树中导出目标的支持

  • 删除支持macOS 10.14 、macOS 10.15和Ubuntu 14.04的支持

  • 需要MongoDB C驱动程序v 1.25.0或更高版本

  • 需要 CMake v 3.15或更高版本才能支持FetchContent模块

对于3.8 及更早版本的驾驶员,请参阅 GitHub 上每个发布的发布说明和相关 JIRA 票证Github

后退

新增功能