2010-06-30 10 views
0

J'essaie de trouver la meilleure façon de stocker mon daat en utilisant mongodb et mongomapper.nidification profonde ou collection différente mongodb?

J'ai catégorie et chaque catégorie peut être décrite par de nombreux attributs si la longueur en mm, le poids en kg, etc.

Je veux que chaque utilisateur soit en mesure de créer leurs propres attributs à descibe une catégorie de produits.

Alors Parexemple:

utilisateur A veut stocker ses catégorie « voitures » avec nombre de roues et la longueur de voiture en mm utilisateur B veut stocker ses catégorie « voitures » avec nombre de roues et de la longueur en mm et poids en kg.

Les catégories sont les mêmes pour tout le monde, mais les attributs peuvent être différents.

Est-ce que je devrais stocker ceci comme collection de catégorie alors chaque cateogry contient et tableau d'utilisateurs contenant chacun un hachage d'attribut anmes et unités? Ou est-ce que je devrais diviser cela en plusieurs collections d'une manière ou d'une autre?

Ou y a-t-il une meilleure façon de penser?

Est-ce un problème d'imbrication profonde?

merci beaucoup à l'avance pour de l'aide et des conseils. rick

+0

Ceci est juste un re-hash de votre question précédente: http://stackoverflow.com/questions/3097842/ et vous n'avez jamais pris la peine d'accepter cette réponse.Je vais laisser cette question à quelqu'un d'autre. –

+0

Pouvez-vous élaborer sur "l'emboîtement en profondeur" - combien de niveaux sera-t-il en réalité? – nawroth

+0

soupir ... c'est maintenant devenu un concours popularty pour être le premier à répondre ou à avoir la "meilleure" réponse. – luckytaxi

Répondre

0

Commençons par la réponse facile. Stockez les attributs en tant que champs dans le document d'éléments. C'est pourquoi on utilise un magasin de données sans schéma.

Maintenant, à propos de quelle sorcière attribue à mettre avec quel objet. Réponse courte: Toutes les manières que vous décrivez fonctionneront; tous ont des compromis en termes d'efficacité.

Je pense que votre modèle va comme ceci:

  • Il y a une collection utilisateurs
  • Il y a de nombreuses collections des objets appelés catégories
  • chaque élément est membre de un catégorie
  • chaque utilisateur a beaucoup articles
  • chaque élément dans une catégorie a beaucoup attributs potentiels en fonction de l'utilisateur
  • certains utilisateurs partageront attributs

je devrais les collections suivantes: les utilisateurs, * catégories (par exemple. voitures, bateaux, maisons, etc ...), attributs. La collection d'attributs énumérerait une catégorie (par exemple des voitures), et l'attribut des articles dans cette catégorie (par exemple la consommation de carburant), et une liste des user_ids qui utilisent cet attribut.