Embedded documents¶
Embedded documents are document to be embedded in mongoz.Document
. The difference between one and
the other is that the EmbeddedDocument
are not inserted separately and do not have a separate
_id
.
To define an EmbeddedDocument
you should inherit from mongoz.EmbeddedDocument
and define the
fields in the way you would define for any other mongoz.Document
.
from typing import List
import mongoz
from mongoz import Document, EmbeddedDocument
database_uri = "mongodb://localhost:27017"
registry = mongoz.Registry(database_uri)
class Award(EmbeddedDocument):
name: str = mongoz.String()
class Crew(EmbeddedDocument):
award: Award = mongoz.Embed(Award)
name: str = mongoz.String()
class Actor(EmbeddedDocument):
name: str = mongoz.String()
class Genre(EmbeddedDocument):
title: str = mongoz.String()
class Movie(Document):
actors: List[Actor] = mongoz.Array(Actor)
name: str = mongoz.String()
director: Crew = mongoz.Embed(Crew)
genre: Genre = mongoz.Embed(Genre)
year: int = mongoz.Integer()
class Meta:
registry = registry
database = "my_db"
As you can see, the EmbeddedDocument
is not a standlone document itself but part of the
document when declaring.
An EmbeddedDocument
canm be used inside another and therefore creating a nested declaration
when saving the results.