MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Melhor maneira de organizar subdocumentos no Mongo?


Discuto um pouco sobre isso aqui, leia primeiro:https://stackoverflow.com/a/27285313/ 68567

Para o seu caso, a opção 3 (manter alguns dados em seu modelo primário) é provavelmente a melhor. A chave é Evitar o crescimento ilimitado da matriz .

Isso tem a ver com como o Mongodb aloca documentos. http://docs.mongodb.org/manual/core/storage/ "Todo documento no MongoDB é armazenado em um registro que contém o próprio documento e espaço extra, ou preenchimento, que permite que o documento cresça como resultado de atualizações."

Quando o nó aloca novos documentos, ele aloca espaço com base no tamanho do documento inserido e nos tamanhos dos documentos já em sua coleção. (Leia mais no link acima.) Se você tiver alguns documentos que são ordens de grandeza maiores do que outros, isso provavelmente levará à fragmentação.

A maneira de evitar ter muitos documentos em sua matriz de subdocumentos 'comments' é com os comandos $push e $slice.http://docs.mongodb.org/manual/reference/operator/update/slice/

Portanto, armazene os '5 mais recentes' e exiba-os quando o item for carregado pela primeira vez. (Ou mais antigo, ou qualquer outro critério de classificação que você queira usar.) Em seguida, forneça uma maneira para o usuário carregar mais, o que fará uma viagem de ida e volta separada para a coleção que tem todos eles.