def _is_fcv_upgradeable(fc_version: Version, server_version: Version) -> bool:
    """Tests to see if feature compatibility version (FCV) upgrade is possible.

    The following conditions return ``False``:

        -   If the FCV is greater than the server version, warn that this is an
            unexpected and return ``False``.
        -   If the major versions between server and FCV is greater than we can
            handle, warn that this is unexpected and return ``False``.
        -   If either the server's version are FCV are the oldest supported
            version, warn about any upcoming deprecations. If the server version
            is not greater than the FCV return ``False``.

    Note that MongoDB will fail to initialize if the server version and FCV
    differ by two or more major versions, so this check may be redundant.

    Args:
        fc_version: a ``packaging.Version`` representing the FCV
        server_version: a ``packaging.Version`` representing the Server's version

    Returns:
        whether a version upgrade is possible
    """
    if fc_version > server_version:
        logger.warning(
            "Your MongoDB feature compatibility is greater than your "
            "server version. "
            "This may result in unexpected consequences. "
            "Please manually update your database's feature compatibility "
            "version. You can suppress this exception by setting your "
            "`database_validation` config parameter to `False`. See "
            "https://docs.voxel51.com/user_guide/config.html#configuring-a-mongodb-connection "
            "for more information"
        )
        return False

    elif (
        server_version.major - fc_version.major
        > foc.MONGODB_MAX_ALLOWABLE_FCV_DELTA
    ):
        logger.warning(
            "Your MongoDB server version is more than %s "
            "ahead of your database's feature compatibility version. "
            "Please manually update your database's feature "
            "compatibility version. You can suppress this exception by setting your "
            "`database_validation` config parameter to `False`. See "
            "https://docs.voxel51.com/user_guide/config.html#configuring-a-mongodb-connection "
            "for more information" % str(foc.MONGODB_MAX_ALLOWABLE_FCV_DELTA)
        )
        return False

    elif (fc_version.major == foc.MONGODB_MIN_VERSION.major) or (
        server_version.major == foc.MONGODB_MIN_VERSION.major
    ):
        logger.warning(
            "You are running the oldest supported major version of MongoDB. "
            "Please refer to https://deprecation.voxel51.com "
            "for deprecation notices. You can suppress this exception by setting your "
            "`database_validation` config parameter to `False`. See "
            "https://docs.voxel51.com/user_guide/config.html#configuring-a-mongodb-connection "
            "for more information"
        )
        return server_version.major > fc_version.major

    return server_version.major > fc_version.major
Tests to see if feature compatibility version (FCV) upgrade is possible.

    The following conditions return ``False``:

        -   If the FCV is greater than the server version, warn that this is an
            unexpected and return ``False``.
        -   If the major versions between server and FCV is greater than we can
            handle, warn that this is unexpected and return ``False``.
        -   If either the server's version are FCV are the oldest supported
            version, warn about any upcoming deprecations. If the server version
            is not greater than the FCV return ``False``.

    Note that MongoDB will fail to initialize if the server version and FCV
    differ by two or more major versions, so this check may be redundant.

    Args:
        fc_version: a ``packaging.Version`` representing the FCV
        server_version: a ``packaging.Version`` representing the Server's version

    Returns:
        whether a version upgrade is possible
    
fiftyone/core/odm/database.py