# MongoDB for Agent (/database/providers/mongo/usage/mongodb-for-agent)



`MongoDb` stores an Agent's sessions and run history in MongoDB.

## Usage [#usage]

Start in a [virtual environment](/sdk/setup) and set the model key before running the example.

## Set OpenAI Key [#set-openai-key]

Set your `OPENAI_API_KEY` as an environment variable. You can get one [from OpenAI](https://platform.openai.com/account/api-keys).

<CodeBlockTabs defaultValue="Mac">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="Mac">
      Mac
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="Windows PowerShell">
      Windows PowerShell
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="Mac">
    ```bash
    export OPENAI_API_KEY=sk-***
    ```
  </CodeBlockTab>

  <CodeBlockTab value="Windows PowerShell">
    ```powershell
    $env:OPENAI_API_KEY = "your-openai-api-key"
    ```
  </CodeBlockTab>
</CodeBlockTabs>

Provide either `db_url` or `db_client`. The default database name is `agno`; set `db_name` to use another database. The following example uses `db_url`.

Install the `agno`, `pymongo`, `openai`, and `ddgs` packages:

```shell
uv pip install agno pymongo openai ddgs
```

### Run MongoDB [#run-mongodb]

Install [Docker Desktop](https://docs.docker.com/get-started/get-docker/), then start MongoDB on port `27017`:

```bash
docker run -d \
  --name local-mongo \
  -p 27017:27017 \
  -e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
  -e MONGO_INITDB_ROOT_PASSWORD=secret \
  mongo
```

```python title="mongodb_for_agent.py"
from agno.agent import Agent
from agno.db.mongo import MongoDb
from agno.tools.websearch import WebSearchTools

db_url = "mongodb://mongoadmin:secret@localhost:27017"

db = MongoDb(db_url=db_url)

agent = Agent(
    db=db,
    tools=[WebSearchTools()],
    add_history_to_context=True,
)
agent.print_response("How many people live in Canada?")
agent.print_response("What is their national anthem called?")
```

## Parameters [#parameters]

| Parameter                  | Type                    | Default | Description                                                                                   |
| -------------------------- | ----------------------- | ------- | --------------------------------------------------------------------------------------------- |
| `id`                       | `Optional[str]`         | -       | Database ID. Derived deterministically from connection/client and database name when omitted. |
| `db_client`                | `Optional[MongoClient]` | -       | The MongoDB client to use.                                                                    |
| `db_name`                  | `Optional[str]`         | -       | The name of the database to use.                                                              |
| `db_url`                   | `Optional[str]`         | -       | The database URL to connect to.                                                               |
| `session_collection`       | `Optional[str]`         | -       | Name of the collection to store sessions.                                                     |
| `runs_collection`          | `Optional[str]`         | -       | Name of the collection to store individual runs.                                              |
| `memory_collection`        | `Optional[str]`         | -       | Name of the collection to store memories.                                                     |
| `metrics_collection`       | `Optional[str]`         | -       | Name of the collection to store metrics.                                                      |
| `eval_collection`          | `Optional[str]`         | -       | Name of the collection to store evaluation runs.                                              |
| `knowledge_collection`     | `Optional[str]`         | -       | Name of the collection to store knowledge documents.                                          |
| `traces_collection`        | `Optional[str]`         | -       | Name of the collection to store traces.                                                       |
| `spans_collection`         | `Optional[str]`         | -       | Name of the collection to store spans.                                                        |
| `schedules_collection`     | `Optional[str]`         | -       | Name of the collection to store cron schedules.                                               |
| `schedule_runs_collection` | `Optional[str]`         | -       | Name of the collection to store schedule run history.                                         |
| `learnings_collection`     | `Optional[str]`         | -       | Name of the collection to store learnings.                                                    |

## Run the Example [#run-the-example]

Save the code as `mongodb_for_agent.py`, complete the prerequisites above, then run:

```bash
python mongodb_for_agent.py
```
