.. _broker-mongodb:

===============
 Using MongoDB
===============

.. admonition:: Experimental Status

    The MongoDB transport is in need of improvements in many areas and there
    are several open bugs.  Unfortunately we don't have the resources or funds
    required to improve the situation, so we're looking for contributors
    and partners willing to help.

.. _broker-mongodb-installation:

Installation
============

For the MongoDB support you have to install additional dependencies.
You can install both Celery and these dependencies in one go using
the ``celery[mongodb]`` :ref:`bundle <bundles>`:

.. code-block:: console

    $ pip install -U celery[mongodb]

.. _broker-mongodb-configuration:

Configuration
=============

Configuration is easy, set the transport, and configure the location of
your MongoDB database:

.. code-block:: python

    broker_url = 'mongodb://localhost:27017/database_name'

Where the URL is in the format of:

.. code-block:: text

    mongodb://userid:password@hostname:port/database_name

The host name will default to ``localhost`` and the port to 27017,
and so they are optional.  ``userid`` and ``password`` are also optional,
but needed if your MongoDB server requires authentication.

.. _mongodb-results-configuration:

Results
-------

If you also want to store the state and return values of tasks in MongoDB,
you should see :ref:`conf-mongodb-result-backend`.