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

Quelle est la meilleure structure de données pour stocker ces données sur mongoDB ?

Votre structure semble correcte. Vous stockez uniquement news_id dans le champ de données et c'est une implémentation plus intelligente car le stockage d'un document complet entraînera de nombreux déplacements et écritures par MongoDB chaque fois qu'une nouvelle actualité est ajoutée aux favoris par l'utilisateur.

La raison, que vous connaissez probablement déjà, est qu'un nouveau document est créé à chaque mise à jour. Référence :http://docs.mongodb.org/ manuel/référence/méthode/db.collection.save/#upsert .

Je pense également qu'en tant que règle commerciale, vous devriez limiter le nombre d'éléments d'actualité pouvant être définis comme favoris par l'utilisateur. Laisser cette liste s'allonger indéfiniment ne sera pas une bonne idée pour la conception embarquée.

Si vous voulez un nombre illimité de favoris, vous feriez mieux de créer une collection séparée pour cela, puis pour obtenir tous les favoris par un utilisateur, utilisez les opérateurs $match (sur l'identifiant de l'utilisateur) et $sort (des articles d'actualité) dans une requête d'agrégation pour obtenir la liste triée des actualités préférées de l'utilisateur.