Jeg diskuterer det lidt her, læs dette først:https://stackoverflow.com/a/27285313/ 68567
For dit tilfælde er mulighed 3 (behold nogle af dataene i din primære model) sandsynligvis den bedste. Nøglen er at undgå ubegrænset matrixvækst .
Dette har at gøre med, hvordan Mongodb allokerer dokumenter. http://docs.mongodb.org/manual/core/storage/ "Hvert dokument i MongoDB er gemt i en post, som indeholder selve dokumentet og ekstra plads, eller udfyldning, som tillader dokumentet at vokse som et resultat af opdateringer."
Når node allokerer nye dokumenter, tildeler den plads baseret på størrelsen af det indsatte dokument og størrelsen af dokumenter, der allerede er i din samling. (Læs mere i linket ovenfor.) Hvis du har nogle dokumenter, der er større end andre, vil dette sandsynligvis føre til fragmentering.
Måden at undgå at have for mange dokumenter i dit "kommentarer" underdokumentarray er med kommandoerne $push og $slice.http://docs.mongodb.org/manual/reference/operator/update/slice/
Så gem de 'seneste 5' og vis dem, når varen først indlæses. (Eller ældste, eller hvilke andre sorteringskriterier du vil bruge.) Giv derefter en måde, hvorpå brugeren kan indlæse mere, hvilket vil gøre en separat rundtur til samlingen, der har dem alle.