sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo _id för subdocument array

Jag antar:

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

Typ av struktur för denna fråga.

Inte normalt. _id s är unika identifierare för enheter. Som sådan om du vill lägga till _id inom ett underdokumentobjekt så kanske du inte har normaliserat dina data särskilt bra och det kan vara ett tecken på ett grundläggande fel i din schemadesign.

Underdokument är utformade för att innehålla återkommande data för det dokumentet, d.v.s. adresserna eller en användare eller något.

Som sagt _id är inte alltid en dålig sak att lägga till. Ta exemplet jag just angav med adresser. Föreställ dig att du skulle ha ett kundvagnssystem och (av någon anledning) att du inte replikerade adressen till beställningsdokumentet, då skulle du använda ett _id eller någon annan identifierare för att få ut det underdokumentet.

Du måste också ta hänsyn till att länka dokument. Om det _id beskriver ett annat dokument och egenskaperna är anpassade attribut för det dokumentet i förhållande till det länkade dokumentet, då är det okej också.

Ett ObjectId är fortfarande ganska stor så det är något att ta hänsyn till om ett mindre, mindre unikt id eller att inte använda ett _id alls för underdokument.

För index fungerar det egentligen inte annorlunda än standarden _id fältet på själva dokumentet och ett unikt index över hela fältet bör fungera i hela samlingen (scenarioberoende, testa dina frågor).

OBS:MongoDB lägger inte till ett _id till underdokument åt dig.




  1. SQL LPAD()

  2. Skicka en referens till en Redis-instans till en Gorilla/Mux-hanterare

  3. MongoDB $mul

  4. mongodb hur frågar man en summasträng?