sql >> Databasteknik >  >> NoSQL >> MongoDB

inbäddat dokument vs hashdatatyp i mongoid

Mongoid lagrar inbäddade dokument och Hash-attribut på ungefär samma sätt på databasnivå. Det är normalt när du arbetar med mongoid att deklarera dina fält i dina modeller så om du har en kapslad struktur är det normalt att skapa ett inbäddat dokument. Eftersom MongoDB är schemalös mongoid behöver du deklarera fält för att kunna presentera dem i samma typ av API som ActiveRecord gör. Men för vissa användningsfall ger ett Hash-attribut dig lite mer flexibilitet. Nackdelen med den flexibiliteten är att du är begränsad till Hash API så att du inte får automatiskt genererade attributmetoder och du kan inte kapsla in affärslogik på det sätt som du normalt kan göra inom en modellklass.

Anta som ett exempel att du har en frågeformulärsmodell där du behöver lagra många avsnitt som innehåller många fråga-svar-par. Om ett centralt krav i systemet är att administratören ska kunna ställa in nya avsnitt och frågor så skulle du inte lätt kunna modellera svaren som ett vanligt inbäddat dokument som innehåller explicita fält för varje fråga. För den typen av saker kan en Hash vara mer vettig.

Jag vet inte vad dina specifika krav är, men som en grov guide skulle jag säga att när du arbetar med ett fast schema ska du hålla fast vid ett inbäddat dokument, men när du behöver en modell med öppen modell, överväg Hash-attribut.



  1. Mongodb Aggregation Framework | Gruppera över flera värden?

  2. Arkitektoniska mönster för nära realtidsdatabehandling med Apache Hadoop

  3. Laddar JWplayer bädda in kod från databassamling till en sidmall i meteor.js

  4. tar bort objekt från kapslad array av objekt mongodb