Skip to content


Beanie uses Motor as an async database engine. To initialize previously created documents, you should provide a Motor database instance and a list of your document models to the init_beanie(...) function, as it is shown in the example:

from beanie import init_beanie, Document
from motor.motor_asyncio import AsyncIOMotorClient

class Sample(Document):
    name: str

async def init():
    # Create Motor client
    client = AsyncIOMotorClient(

    # Initialize beanie with the Sample document class and a database
    await init_beanie(database=client.db_name, document_models=[Sample])

This creates the collection (if necessary) and sets up any indexes that are defined.

init_beanie supports not only a list of classes as the document_models argument, but also strings with dot-separated paths:

await init_beanie(


init_beanie supports the parameter named allow_index_dropping that will drop indexes from your collections. allow_index_dropping is by default set to False. If you set this to True, ensure that you are not managing your indexes in another manner. If you are, these will be deleted when setting allow_index_dropping=True.