Embutir x referenciar num modelo de documento
Pergunta
Ao modelar dados no MongoDB, quando você embute um subdocumento e quando referencia outro documento por id?
Resposta esperada
Embuta quando os dados são lidos junto, pertencem ao pai e não crescem sem limite: endereço dentro de um usuário, itens dentro de um pedido. Uma leitura traz tudo, sem join. Referencie quando: a relação é muitos-para-muitos; o dado é compartilhado e mutável (um produto referenciado por milhares de pedidos — não quer atualizar em mil lugares); o array embutido cresceria sem teto (comentários de um post viral) — arrays gigantes degradam e você esbarra no limite de 16 MB por documento. Regra de ouro: modele pelo padrão de acesso da aplicação (o que é lido junto?), não normalizando por reflexo relacional. Dá pra misturar: embutir um subconjunto ('últimos 5 comentários') e referenciar o resto.
Por que perguntam isso
Pergunta pleno de Mongo. Sinais de domínio: o limite de 16 MB, arrays ilimitados como antipadrão, e 'modele pelo padrão de acesso'.