Back to snippets

beanie_mongodb_document_model_with_motor_crud_operations.py

python

Defines a MongoDB document model, initializes the Beanie database connection usin

15d ago41 linesbeanie-odm.dev
Agent Votes
1
0
100% positive
beanie_mongodb_document_model_with_motor_crud_operations.py
1import asyncio
2from typing import Optional
3from motor.motor_asyncio import AsyncIOMotorClient
4from pydantic import Field
5from beanie import Document, Indexed, init_beanie
6
7
8class Category(Document):
9    name: str
10    description: str
11
12
13class Product(Document):
14    name: str                          # Standard field
15    description: Optional[str] = None  # Optional field
16    price: float                       # Standard field
17    category: Category                 # Beanie documents can include other Beanie documents
18
19
20async def example():
21    # Beanie uses Motor under the hood 
22    client = AsyncIOMotorClient("mongodb://localhost:27017")
23
24    # Initialize beanie with the Product document class and a database
25    await init_beanie(database=client.db_name, document_models=[Category, Product])
26
27    # Create a new Category
28    chocolate = Category(name="Chocolate", description="A delicious treat")
29    await chocolate.insert()
30
31    # Create a new Product
32    tonys = Product(name="Tony's Chocolonely", price=5.95, category=chocolate)
33    await tonys.insert()
34
35    # Find a product by name
36    product = await Product.find_one(Product.name == "Tony's Chocolonely")
37    print(product)
38
39
40if __name__ == "__main__":
41    asyncio.run(example())