sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongo _id for underdokumentarray

Jeg går ud fra:

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

Type struktur for dette spørgsmål.

Ikke normalt. _id s er unikke identifikatorer for enheder. Som sådan, hvis du ønsker at tilføje _id inden for et underdokumentobjekt, så har du måske ikke normaliseret dine data særlig godt, og det kan være et tegn på en grundlæggende fejl i dit skemadesign.

Underdokumenter er designet til at indeholde gentagne data for det pågældende dokument, dvs. adresserne eller en bruger eller noget.

Når det er sagt _id er ikke altid en dårlig ting at tilføje. Tag det eksempel, jeg lige har nævnt med adresser. Forestil dig, at du skulle have et indkøbskurvsystem, og du (af en eller anden grund) ikke kopierede adressen til ordredokumentet, så ville du bruge et _id eller en anden identifikator for at få det underdokument ud.

Du skal også overveje at linke dokumenter. Hvis det _id beskriver et andet dokument, og egenskaberne er brugerdefinerede attributter for det dokument i forhold til det linkede dokument, så er det også okay.

Et ObjectId er stadig ret stor, så det er noget, der skal tages i betragtning i forhold til et mindre, mindre unikt id eller ikke ved at bruge et _id overhovedet for underdokumenter.

For indekser fungerer det ikke rigtig anderledes end standarden _id felt på selve dokumentet og et unikt indeks på tværs af feltet skulle fungere på tværs af samlingen (scenarieafhængig, test dine forespørgsler).

NB:MongoDB tilføjer ikke et _id til underdokumenter til dig.




  1. React.js:Rå HTML-streng bliver ikke genkendt som HTML-elementer fra Node.js

  2. Forstå ændringerne i MongoDB ny C#-driver (Async og Await)

  3. Skub til to separate arrays i ét opdateringskald i mongodb

  4. Hvorfor MongoDB ikke bruger Index Intersection?