MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

La meilleure façon d'organiser les sous-documents dans Mongo ?

J'en discute un peu ici, lisez ceci d'abord :https://stackoverflow.com/a/27285313/ 68567

Pour votre cas, l'option 3 (conserver certaines des données dans votre modèle principal) est probablement la meilleure. La clé est d'éviter la croissance illimitée des baies .

Cela a à voir avec la façon dont Mongodb alloue les documents. http://docs.mongodb.org/manual/core/storage/ "Chaque document dans MongoDB est stocké dans un enregistrement qui contient le document lui-même et un espace supplémentaire, ou remplissage, qui permet au document de se développer à la suite de mises à jour."

Lorsque le nœud alloue de nouveaux documents, il alloue de l'espace en fonction de la taille du document inséré et de la taille des documents déjà dans votre collection. (Lire plus dans le lien ci-dessus.) Si vous avez des documents qui sont des ordres de grandeur plus volumineux que d'autres, cela conduira probablement à une fragmentation.

Le moyen d'éviter d'avoir trop de documents dans votre tableau de sous-documents 'commentaires' consiste à utiliser les commandes $push et $slice.http://docs.mongodb.org/manual/reference/operator/update/slice/

Stockez donc les « 5 plus récents » et affichez-les lors du premier chargement de l'élément. (Ou le plus ancien, ou tout autre critère de tri que vous souhaitez utiliser.) Fournissez ensuite à l'utilisateur un moyen d'en charger davantage, ce qui effectuera un aller-retour séparé vers la collection qui les contient tous.