sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongo _id para matriz de subdocumento

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.