2014-08-29 1 views
1

Je ne suis pas vraiment un backend guy et encore pire quand il s'agit de MongoDB, cependant, j'ai été pris avec Meteor.js alors je fais un essai en tant que Je joue autour.MongoDB Data Model Design pour Meteor.js App

Je crée une application de gestion de projet/billetterie et j'aimerais connaître votre opinion sur la conception de modèle de données. Dans mon application, vous créez un ticket, affectez d'autres membres de l'équipe au ticket et permettez aux utilisateurs d'y accéder et de manipuler les données comme une liste de tâches, des pièces jointes, des commentaires, etc. Assez basique. D'après mes recherches, il semble qu'un modèle de données normalisé avec des références ait du sens. Dans ce cas, est un bon modèle:

  1. Une collection pour tous mes utilisateurs.
  2. Une collection de billets (chaque billet/projet son propre document) avec un champ pour les membres de l'équipe dans lequel je les insère dans un tableau en utilisant une référence. Ensuite, j'ai des champs pour commentaires, todos, etc.

Ou serait-ce mieux:

  1. Une collection pour tous mes utilisateurs.
  2. Une collection unique pour chaque ticket avec un champ pour les membres de l'équipe conservés dans un tableau.

Désolé, cela semble plutôt basique. Je prends les cours MongoDB University pour Node, alors j'espère que je n'aurai pas besoin de trop compter sur trop de questions de base pendant trop longtemps.

Merci à tous!

Répondre

0

Vous devez stocker chaque ticket/projet dans son propre document dans une collection unique (la première option).

Si vous attribuez à chaque ticket sa propre collection, vous n'avez aucun moyen efficace d'indexer et d'interroger les tickets.

+0

Merci Tomas! Souhaitez-vous ajouter tous les commentaires dans un tableau dans un champ alors? – ObbyOss

+0

Oui, les commentaires seraient un seul champ, contenant un tableau d'objets. Chaque objet contiendrait un nom d'utilisateur, une date, un message et d'autres champs applicables. – Tomas