Supongo:
{
g: [
{ _id: ObjectId(), property: '' },
// next
]
}
Tipo de estructura para esta pregunta.
No normalmente. _id
s son identificadores únicos para entidades. Como tal, si está buscando agregar _id
dentro de un objeto de subdocumento, es posible que no haya normalizado muy bien sus datos y podría ser un signo de una falla fundamental en el diseño de su esquema.
Los subdocumentos están diseñados para contener datos repetidos para ese documento, es decir, las direcciones o un usuario o algo así.
Dicho esto _id
No siempre es malo agregar. Tome el ejemplo que acabo de mencionar con las direcciones. Imagine que tuviera un sistema de carrito de compras y (por alguna razón) no replicara la dirección en el documento del pedido, entonces usaría un _id
o algún otro identificador para sacar ese subdocumento.
También hay que tener en cuenta la vinculación de documentos. Si ese _id
describe otro documento y las propiedades son atributos personalizados para ese documento en relación con ese documento vinculado, entonces también está bien.
Un ObjectId
todavía es bastante considerable, por lo que es algo a tener en cuenta sobre una identificación más pequeña y menos única o no usar un _id
en absoluto para los subdocumentos.
Para los índices, en realidad no funciona de manera diferente al estándar _id
campo en el documento en sí y un índice único en el campo debería funcionar en toda la colección (dependiendo del escenario, pruebe sus consultas).
NB:MongoDB no agregará un _id
a los subdocumentos por usted.