Ir para o conteúdo

Documentos incorporados

Documentos incorporados são documentos que são incorporados no mongoz.Document. A diferença entre um e outro é que o EmbeddedDocument não é inserido separadamente e não possui um _id separado.

Para definir um EmbeddedDocument, deve herdar de mongoz.EmbeddedDocument e definir os campos da mesma forma que definiria para qualquer outro 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"

Como pode ver, o EmbeddedDocument não é um documento independente em si, mas parte do documento ao declarar.

Um EmbeddedDocument pode ser usado dentro de outro e, portanto, criar uma declaração nested ao guardar os resultados.