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ê.