2011-09-12 1 views
1

Eh bien, je vais mettre en place mon schéma mongo db pour un petit site, ce que je besoin est de reproduire ce schéma dans mongo collections db:les parents mongo Db et étiquettes enfants liés à d'autres collections champs

product 
     -> tag1 
       ->child_tag1 
       ->child_tag2 
     -> tag2 
       ->child_tag1 
       ->child_tag2 
     -> tag3 
       ->child_tag1 
       ->child_tag2 

quel est le meilleur moyen de reproduire ce schéma avec mongo?

Pour que je dois être en mesure de changer une étiquette ou une étiquette enfant sans mise à jour toute la collection des objets :) [edited]

cause bien de Je sais que ma question n'est pas si claire, je dois préciser que J'essaie de convertir un site db mysql sur un site mongoDb.

donc j'ai 4 tables dans MySQL:

products 

id(AUTO) | product_name | qty 
1   biscuits  34 
2   limonade  29 

tags 

id(AUTO) | tag_name 
    1   sugar 
    2   eggs 
    3   vitamine C 

tags_childs 

id(AUTO) | id_tag | tag_child_name 
    1   1  glucouse 
    2   2  protein 
    3   2  chicken 
products_tags 

id_product | id_tag | id_tag_child 
    1   1   NULL 
    1   1   1 
    1   2   3 
    2   3  NULL 

donc j'utiliser la table products_tags à se joindre à plus de 4 tables (ce qui est la raison pour laquelle le chauffage rejoint je suis passer à MongoDB :))

si Je peux reproduire ce scénario avec des collections et des objets mongodb?

thx :)

+1

pouvez-vous expliquer un peu plus sur ce que vous faites exactement? En ce moment je ne comprends pas exactement ce que tu fais exactement. – Petrogad

+0

Donc un problème complètement séparé que je voudrais souligner ... Je ne suis pas sûr mais vous ne devriez pas avoir besoin d'une table tags et tags_childs car vous pourriez juste avoir une colonne supplémentaire dans les tags étiquetés "tag_parent_id", qui est Un identifiant d'une autre étiquette .. Rédaction d'une réponse à la question à portée de main, mais au moins voulait souligner cela. – Petrogad

Répondre

1

Je voulais juste vous assurer que je comprends ce que votre document ci-dessus montre; Essentiellement, de nombreux produits peuvent avoir plusieurs balises, et les balises peuvent avoir des enfants en dessous (balise de codage -> Php est une balise enfant de codage).

Cela étant ma compréhension de la question ci-dessus est ici comment je structurer votre mongo Collections:

Produits Collection:

{ 
    "ProductName":"Sweet Jelly", 
    "Qty":9, 
    "Tags":[ 
    ListOfTagIds 
    ] 
} 

La liste des TagIds serait Identifiants unique qui MongoDB attribue automatiquement chacun des nouveaux champs créés .. see here

de là, je crée une collection de tags:

{ 
    "TagName":"Coding Languages"; 
    "ChildTags":[ 
     $_idOfChildren 
    ] 
} 

Ensuite, si votre balise avait un enfant:

{ 
    "TagName":"PHP", 
} 

Pour cette relation parent/enfant, vous pouvez lire un peu plus à ce sujet de cette excellente ressource mongo situé ici: Mongo Book - Page 16 à partir sans jointures.

Bonne chance!

+0

merci pour les liens ils sont vraiment intéressants :), désolé mais j'ai enlevé l'acceptation sur la réponse, cause (peut-être ma mauvaise question n'est pas claire à coup sûr), j'ai besoin d'une relation 1-à-plusieurs, car les produits peuvent avoir beaucoup parent tags eux-mêmes liés à de nombreux balises childs, donc si le produit a une balise parent 1, il ne peut avoir aucun tag 1 balises enfant liées, ne sais pas si clair ...désolé pour mon mauvais anglais – sbaaaang

+0

en train de planifier ce que je suis triste, produit {_id: ObjectId(), tags: [id_tag_parent: [id_tag_child, id_tag_child, id_tag_child], id_tag_parent: [NULL car j'ai besoin de lui peut être NULL], id_tag_parent: [id_tag_child ]]} – sbaaaang

+0

uhm ...: P j'ai édité ma question: P mieux si vous consultez mes données de table: P eheh thx! – sbaaaang

Questions connexes