Documentos incorporados armazenam dados relacionados em uma única estrutura de documento. Um documento pode conter arrays e subdocumentos com dados relacionados. Esses modelos de dados denormalizados permitem que os aplicativos recuperem dados relacionados em uma única operação do banco de dados.
No exemplo a seguir, os campos contact e access são documentos incorporados:
Modelos de dados incorporados são frequentemente considerados desnormalizados porque os dados acessados com frequência são duplicados em várias collections.
Os modelos de dados incorporados permitem que os aplicativos consultem informações relacionadas no mesmo registro de banco de dados . Como resultado, a incorporação oferece os seguintes benefícios:
Melhor desempenho para operações de leitura
A capacidade de recuperar dados relacionados em uma única operação de banco de dados
A capacidade de atualizar dados relacionados em uma única operação de gravação atômica
Documentos incorporados armazenam dados relacionados em uma única estrutura de documento. Um documento pode conter arrays e subdocumentos com dados relacionados. Esses modelos de dados denormalizados permitem que os aplicativos recuperem dados relacionados em uma única operação do banco de dados.
Observação
Limite de tamanho do documento
Os documentos no MongoDB devem ser menores que 16 mebibytes.
Para dados binários grandes, considere GridFS.
Casos de uso
Use modelos de dados incorporados nos seguintes cenários:
Você tem relações "contidas" entre entidades. Por exemplo, um documento
contactsque contém umaddress. Consulte Modelar relacionamentos um-para-um com documentos incorporados.Você tem relações um-para-muitos entre entidades. Nesses relacionamentos, os documentos "muitos" ou filhos são visualizados no contexto de "um" ou documentos pai. Consulte Modele relacionamentos um-para-muitos com documentos incorporados.
Coleções com um grande número de documentos pequenos
Se você tiver uma collection com um grande número de pequenos documentos, considere incorporar para melhorar o desempenho. Se você puder agrupar esses documentos pequenos por algum relacionamento lógico e frequentemente recuperar os documentos por esse agrupamento, considere "enriquecer" os documentos pequenos em documentos maiores que contenham uma array de documentos incorporados.
"Acumular" esses pequenos documentos em agrupamentos lógicos significa que as queries para recuperar um grupo de documentos envolvem leituras sequenciais e menos acessos aleatórios ao disco. Além disso, "acumular" documentos e mover campos comuns para um documento maior beneficia o índice desses campos. Haveria menos cópias dos campos comuns e menos entradas de chave associadas no índice correspondente. Consulte a página Índices para obter mais informações.
No entanto, se você muitas vezes só precisa recuperar um subconjunto dos documentos dentro do grupo, então "enrolar" os documentos pode não fornecer melhor desempenho. Além disso, se documentos pequenos e separados representarem o modelo natural para os dados, você deve manter esse modelo.
Consultar dados incorporados
Para consultar dados em documentos incorporados, use a notação de ponto. Para obter exemplos de consultas de dados em arrays e documentos incorporados, consulte: