Overview
Esta página describe los cambios que debes hacer en tu aplicación cuando actualices a una nueva versión del driver de C++.
Antes de actualizar, realiza las siguientes acciones:
Asegúrate de que la nueva versión del controlador de C++ sea compatible con las versiones de MongoDB Server a las que tu aplicación se conecta y con la versión estándar de C++ con la que tu aplicación se compila. Para obtener información sobre la compatibilidad de versiones, consulte Compatibilidad.
Resuelva cualquier cambio disruptivo entre la versión del driver que utiliza su aplicación y la versión de actualización planificada en la sección Cambios disruptivos.
Tip
Para garantizar la compatibilidad entre las versiones del MongoDB Server al actualizar las versiones del driver, use el Stable API.
cambio disruptivo
Nota
El driver de C++ sigue el versionado semántico. El driver podría romper la compatibilidad del sistema de compilación o del paquete en cualquier versión. Los lanzamientos de parches podrían revertir cambios disruptivos accidentales de la API.
Para más información, consulta Versionado de API y ABI.
Un cambio disruptivo es un cambio en una convención o comportamiento que empieza a partir de una versión específica del driver. Este tipo de cambios puede evitar que tu aplicación funcione correctamente si no se abordan antes de actualizar el controlador.
Los cambios disruptivos en esta sección se categorizan según la versión del driver que los ha introducido. Al actualizar las versiones del driver, debes abordar todos los cambios disruptivos entre la versión actual y la versión de actualización.
Ejemplo
Actualización desde la versión 3.0
Si estás actualizando el driver C++ de la versión 3.0 a la versión 3.10, aborda todos los cambios disruptivos enumerados para las versiones 3.1 a 3.10, si los hay.
Versión 3.11 cambio disruptivo
Elimina la compatibilidad con MongoDB Server v3.6.
Se requiere MongoDB C Driver v1.28.0 o posterior.
Si el
ENABLE_TESTSla opción de configuración está establecida enON, se requiere C++14 o posterior. Puede excluir el requisito de C++14 deshabilitando las pruebas conENABLE_TESTS=OFFdurante la configuración de CMake.Se remueve la exportación de las siguientes funciones nodos privadas en el ABI bsoncxx:
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*) Remueve la exportación de las siguientes funciones miembro privadas en ABI de mongocxx:
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() Declarar todos los símbolos de funciones exportadas con
__cdeclal compilar con MSVC. Este es un cambio disruptivo en el ABI si se utiliza una convención de llamada por defecto alternativa al compilar proyectos.
Versión 3.10 cambio disruptivo
Esta versión del driver introduce los siguientes cambios disruptivos:
Elimina el soporte para
find_package(libbsoncxx)yfind_package(libmongocxx). Utilicefind_package(bsoncxx)yfind_package(mongocxx)en su lugar.Se elimina el soporte para las variables de CMake
LIBBSONCXX_*yLIBMONGOCXX_*proporcionadas por los archivos de configuración de paquetes de CMake heredados. En su lugar, utilice los objetivos CMake demongo::bsoncxx_*ymongo::mongocxx_*.Remueve la librería estándar de C++ experimental (
BSONCXX_POLY_USE_STD_EXPERIMENTAL) como una opción de polyfill.
Versión 3.9 cambio disruptivo
Esta versión del driver introduce los siguientes cambios disruptivos:
Elimina el soporte para los objetivos exportados del árbol de compilación del proyecto CMake
Descarta el soporte para macOS 10.14, macOS 10.15, y Ubuntu 14.04
Requiere MongoDB C Driver v1.25.0 o una versión posterior
Requiere CMake v3.15 o posterior
Versión 3.8 y anteriores
Para versiones de drivers 3.8 y anteriores, consulta las notas de la versión y los tickets de JIRA asociados para cada versión en GitHub.