### Apache Airflow Provider(s)

mongo

### Versions of Apache Airflow Providers

2.2.0

### Apache Airflow version

2.2.2 (latest released)

### Operating System

Debian GNU/Linux 10 (buster)

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

_No response_

### What happened

`ssl_cert_reqs` has been deprecated in pymongo 3.9
https://github.com/apache/airflow/blob/providers-mongo/2.2.0/airflow/providers/mongo/hooks/mongo.py#L94

```
{taskinstance.py:1703} ERROR - Task failed with exception
Traceback (most recent call last):
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1332, in _run_raw_task
    self._execute_task_with_callbacks(context)
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1458, in _execute_task_with_callbacks
    result = self._execute_task(context, self.task)
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1509, in _execute_task
    result = execute_callable(context=context)
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/providers/amazon/aws/transfers/mongo_to_s3.py", line 123, in execute
    mongo_db=self.mongo_db,
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/providers/mongo/hooks/mongo.py", line 145, in find
    collection = self.get_collection(mongo_collection, mongo_db=mongo_db)
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/providers/mongo/hooks/mongo.py", line 116, in get_collection
    mongo_conn: MongoClient = self.get_conn()
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/providers/mongo/hooks/mongo.py", line 96, in get_conn
    self.client = MongoClient(self.uri, **options)
  File "/home/airflow/.local/lib/python3.7/site-packages/pymongo/mongo_client.py", line 707, in __init__
    keyword_opts.cased_key(k), v) for k, v in keyword_opts.items()))
  File "/home/airflow/.local/lib/python3.7/site-packages/pymongo/mongo_client.py", line 707, in <genexpr>
    keyword_opts.cased_key(k), v) for k, v in keyword_opts.items()))
  File "/home/airflow/.local/lib/python3.7/site-packages/pymongo/common.py", line 740, in validate
    value = validator(option, value)
  File "/home/airflow/.local/lib/python3.7/site-packages/pymongo/common.py", line 144, in raise_config_error
    raise ConfigurationError("Unknown option %s" % (key,))
pymongo.errors.ConfigurationError: Unknown option ssl_cert_reqs
```

Ref:
https://pymongo.readthedocs.io/en/stable/changelog.html#changes-in-version-3-9-0



### What you expected to happen

_No response_

### How to reproduce

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

setup.py
"""
    Replaces extra requirement with provider package. The intention here is that when
    the provider is added as dependency of extra, there is no need to add the dependencies
    separately. This is not needed and even harmful, because in case of future versions of
    the provider, the requirements might change, so hard-coding requirements from the version
    that was available at the release time might cause dependency conflicts in the future.
    Say for example that you have salesforce provider with those deps:
    { 'salesforce': ['simple-salesforce>=1.0.0', 'tableauserverclient'] }
    Initially ['salesforce'] extra has those requirements and it works like that when you install
    it when INSTALL_PROVIDERS_FROM_SOURCES is set to `true` (during the development). However, when
    the production installation is used, The dependencies are changed:
    { 'salesforce': ['apache-airflow-providers-salesforce'] }
    And then, 'apache-airflow-providers-salesforce' package has those 'install_requires' dependencies:
            ['simple-salesforce>=1.0.0', 'tableauserverclient']
    So transitively 'salesforce' extra has all the requirements it needs and in case the provider
    changes it's dependencies, they will transitively change as well.
    In the constraint mechanism we save both - provider versions and it's dependencies
    version, which means that installation using constraints is repeatable.
    :param extra: Name of the extra to add providers to
    :param providers: list of provider ids
    """
    EXTRAS_REQUIREMENTS[extra] = [
        get_provider_package_from_package_id(package_name) for package_name in providers
    ]
def add_provider_packages_to_extra_requirements(extra: str, providers: List[str]) -> None: