Skip to content

Async/Await API Reference

Complete reference for all async methods in MongoDB-ODM. All async methods are prefixed with a and require await.

Connection Management

connect() - Establish async connection

connect(url: str, async_is_enabled=True) -> AsyncMongoClient

adisconnect() - Close async connection

await adisconnect() -> bool

adrop_database() - Drop database asynchronously

await adrop_database(database: Optional[str] = None) -> None

Document Operations

Instance Methods

acreate() - Create document

await doc.acreate(**kwargs) -> Self

aupdate() - Update document

await doc.aupdate(raw: Optional[dict] = None, **kwargs) -> UpdateResult

adelete() - Delete document

await doc.adelete(**kwargs) -> DeleteResult

Query Methods

afind() - Find documents with async iteration

Model.afind(filter=None, projection=None, sort=None, skip=None, limit=None) -> AsyncIterator[Self]

# Usage
async for doc in Model.afind({"status": "active"}):
    print(doc.name)

afind_one() - Find single document

await Model.afind_one(filter=None, projection=None, sort=None) -> Optional[Self]

aget() - Get document (raises if not found)

await Model.aget(filter: dict, sort=None) -> Self

aget_or_create() - Get or create document

await Model.aget_or_create(filter: dict, **kwargs) -> tuple[Self, bool]

Update Methods

aupdate_one() - Update single document

await Model.aupdate_one(filter: dict, data: dict) -> UpdateResult

aupdate_many() - Update multiple documents

await Model.aupdate_many(filter: dict, data: dict) -> UpdateResult

Delete Methods

adelete_one() - Delete single document

await Model.adelete_one(filter: dict) -> DeleteResult

adelete_many() - Delete multiple documents

await Model.adelete_many(filter: dict) -> DeleteResult

Count & Existence

acount_documents() - Count documents

await Model.acount_documents(filter=None) -> int

aexists() - Check if documents exist

await Model.aexists(filter=None) -> bool

Advanced Operations

aaggregate() - Run aggregation pipeline

Model.aaggregate(pipeline: list, get_raw=False) -> AsyncIterator[Any]

# Usage
async for result in Model.aaggregate([{"$match": {"status": "active"}}]):
    print(result)

aget_random_one() - Get random document

await Model.aget_random_one(filter=None) -> Self

abulk_write() - Bulk operations

await Model.abulk_write(requests: Sequence[WriteOp]) -> BulkWriteResult

aload_related() - Load relationships

await Model.aload_related(object_list: AsyncIterator[Self], fields=None) -> Sequence[Self]

Session Management

astart_session() - Start async session

await Model.astart_session() -> AsyncClientSession

# Usage
async with await Model.astart_session() as session:
    async with session.start_transaction():
        await Model.aupdate_one({"_id": "1"}, {"$inc": {"balance": -100}}, session=session)

Index Management

async_apply_indexes() - Apply indexes asynchronously

await async_apply_indexes() -> None