sql >> Database >  >> NoSQL >> MongoDB

Mongo _id voor subdocumentarray

Ik neem aan:

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

Type structuur voor deze vraag.

Normaal niet. _id s zijn unieke identificatiecodes voor entiteiten. Dus als u _id . wilt toevoegen binnen een subdocumentobject, dan heeft u uw gegevens mogelijk niet goed genormaliseerd en kan dit een teken zijn van een fundamentele fout in uw schemaontwerp.

Subdocumenten zijn ontworpen om herhalende gegevens voor dat document te bevatten, d.w.z. de adressen of een gebruiker of zoiets.

Dat gezegd hebbende _id is niet altijd een slechte zaak om toe te voegen. Neem het voorbeeld dat ik net noemde met adressen. Stel je voor dat je een winkelwagensysteem zou hebben en (om de een of andere reden) je het adres niet naar het besteldocument hebt gekopieerd, dan zou je een _id gebruiken of een andere identificatie om dat subdocument eruit te halen.

Ook moet u rekening houden met het koppelen van documenten. Als dat _id een ander document beschrijft en de eigenschappen zijn aangepaste attributen voor dat document in relatie tot dat gekoppelde document, dan is dat ook goed.

Een ObjectId is nog steeds behoorlijk groot, dus dat is iets om rekening mee te houden bij een kleinere, minder unieke id of het niet gebruiken van een _id helemaal niet voor subdocumenten.

Voor indexen werkt het niet echt anders dan de standaard _id veld op het document zelf en een unieke index in het hele veld zouden in de hele collectie moeten werken (afhankelijk van het scenario, test uw zoekopdrachten).

NB:MongoDB voegt geen _id toe naar subdocumenten voor u.




  1. Mongo DB Server Opstartwaarschuwingen

  2. Een aangepaste query maken met django-nonrel en mongodb

  3. Is er een manier om slice te krijgen als resultaat van Find()?

  4. zoek en tel in een enkele mongodb-query