Async MongoDB for Agent
Store agent sessions and run history asynchronously in MongoDB with AsyncMongoDb.
AsyncMongoDb stores an Agent's sessions and run history asynchronously in MongoDB. Use async Agent methods such as arun() and aprint_response().
Usage
Start in a virtual environment and set the model key before running the example.
Set OpenAI Key
Set your OPENAI_API_KEY as an environment variable. You can get one from OpenAI.
export OPENAI_API_KEY=sk-***Provide either db_url or db_client. This example uses db_url.
Install the pymongo (4.9 or later), openai, and ddgs packages:
uv pip install agno "pymongo>=4.9" openai ddgsmotor clients are also supported, but motor is deprecated. Use PyMongo's async client instead.
Run MongoDB
Install Docker Desktop, then start MongoDB on port 27017:
docker run -d \
--name local-mongo \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
-e MONGO_INITDB_ROOT_PASSWORD=secret \
mongoimport asyncio
from agno.agent import Agent
from agno.db.mongo import AsyncMongoDb
from agno.tools.websearch import WebSearchTools
db_url = "mongodb://mongoadmin:secret@localhost:27017"
db = AsyncMongoDb(db_url=db_url)
agent = Agent(
db=db,
tools=[WebSearchTools()],
add_history_to_context=True,
)
async def main():
try:
await agent.aprint_response("How many people live in Canada?")
await agent.aprint_response("What is their national anthem called?")
finally:
await db.close()
if __name__ == "__main__":
asyncio.run(main())Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
id | Optional[str] | - | Database ID. Derived deterministically from connection/client and database name when omitted. |
db_client | Optional[Union[AsyncIOMotorClient, AsyncMongoClient]] | - | The MongoDB async client to use. Supports Motor and PyMongo async clients. |
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 session 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. |
learnings_collection | Optional[str] | - | Name of the collection to store learnings. |
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. |
Run the Example
Save the code as async_mongodb_for_agent.py, complete the prerequisites above, then run:
python async_mongodb_for_agent.py