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

Il modo migliore per organizzare i documenti secondari in Mongo?

Ne discuto un po' qui, leggi prima questo:https://stackoverflow.com/a/27285313/ 68567

Per il tuo caso, l'opzione 3 (mantenere alcuni dei dati nel tuo modello principale) è probabilmente la migliore. La chiave è Evitare una crescita illimitata dell'array .

Questo ha a che fare con il modo in cui Mongodb alloca i documenti. http://docs.mongodb.org/manual/core/storage/ "Ogni documento in MongoDB è archiviato in un record che contiene il documento stesso e spazio aggiuntivo, o riempimento, che consente al documento di crescere come risultato degli aggiornamenti."

Quando il nodo alloca nuovi documenti, alloca spazio in base alle dimensioni del documento inserito e alle dimensioni dei documenti già nella tua raccolta. (Leggi di più nel link sopra.) Se disponi di alcuni documenti di ordini di grandezza più grandi di altri, ciò probabilmente porterà alla frammentazione.

Il modo per evitare di avere troppi documenti nell'array di documenti secondari "commenti" è con i comandi $push e $slice.http://docs.mongodb.org/manual/reference/operator/update/slice/

Quindi memorizza i "5 più recenti" e visualizza quelli quando l'articolo viene caricato per la prima volta. (O il più vecchio, o qualsiasi altro criterio di ordinamento che desideri utilizzare.) Quindi fornisci all'utente un modo per caricarne altri che farà un viaggio di andata e ritorno separato alla raccolta che li ha tutti.