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

indlejret dokument vs hash-datatype i mongoid

Mongoid gemmer indlejrede dokumenter og Hash-attributter på stort set samme måde på databaseniveau. Det er normalt, når du arbejder med mongoid, at erklære dine felter i dine modeller, så hvis du har en indlejret struktur, er det normalt at oprette et indlejret dokument. Fordi MongoDB er skemaløs mongoid, skal du erklære felter for at præsentere dem i den samme slags API, som ActiveRecord gør. Men i nogle tilfælde giver en Hash-attribut dig en smule mere fleksibilitet. Ulempen ved den fleksibilitet er, at du er begrænset til Hash API, så du ikke får autogenererede attributmetoder, og du kan ikke indkapsle forretningslogik på den måde, som du normalt ville gøre inden for en modelklasse.

Antag som et eksempel, at du har en spørgeskemamodel, hvor du skal gemme mange sektioner, der indeholder mange spørgsmål-svar-par. Hvis et centralt krav til systemet er, at administratoren skal være i stand til at opsætte nye sektioner og spørgsmål, vil du ikke let kunne modellere svarene som et almindeligt indlejret dokument, der indeholder eksplicitte felter for hvert spørgsmål. Til den slags kan en Hash måske give mere mening.

Jeg ved ikke, hvad dine specifikke krav er, men som en grov guide vil jeg sige, at når du arbejder med et fast skema med et indlejret dokument, men når du har brug for en åben model, skal du overveje Hash-attributter.



  1. Spark udfører ikke opgaver

  2. Sådan sletter du MongoDB-dokumenter ved at importere en fil

  3. Mongoose &unik mark

  4. sikreIndex i mongodb