MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongo _id para matriz de subdocumentos


Eu assumo:
{
    g: [
        { _id: ObjectId(), property: '' },
        // next
    ]
}

Tipo de estrutura para esta pergunta.

Não normalmente. _id s são identificadores exclusivos para entidades. Como tal, se você deseja adicionar _id dentro de um objeto de subdocumento, você pode não ter normalizado seus dados muito bem e pode ser um sinal de uma falha fundamental no design do esquema.

Os subdocumentos são projetados para conter dados repetidos para esse documento, ou seja, os endereços ou um usuário ou algo assim.

Dito isto _id nem sempre é uma coisa ruim para adicionar. Veja o exemplo que acabei de dizer com endereços. Imagine que você tivesse um sistema de carrinho de compras e (por algum motivo) não replicasse o endereço no documento do pedido, então usaria um _id ou algum outro identificador para obter esse subdocumento.

Além disso, você deve levar em consideração a vinculação de documentos. Se esse _id descreve outro documento e as propriedades são atributos personalizados para esse documento em relação a esse documento vinculado, então tudo bem também.

Um ObjectId ainda é bastante considerável, então isso é algo a ser levado em consideração em um id menor e menos exclusivo ou não usando um _id para subdocumentos.

Para índices, ele realmente não funciona diferente do padrão _id campo no próprio documento e um índice exclusivo no campo deve funcionar em toda a coleção (dependente do cenário, teste suas consultas).

NB:MongoDB não adicionará um _id para subdocumentos para você.