2010-12-14 61 views
3

Je suis confus, ce qui est le meilleur format pour le cas suivant:conception de schéma MongoDB

Name: Pretty nice hot dog 
Stock: 10 
Weight: 0.1 grams 
Price: 2 dollars 

Name: An ordinary dumbbell 
Stock: 5 
Weight: 4 kilograms 
Price: 667.98 yens 

Ce:

db.item.save ({"_id" : 1, "name" : "Pretty nice hot dog", "stock" : 10, "weight" : {"value" : 0.1, "unit" : "gram"}, "price" : {"value" : 2, "unit" : "dollar"}}) 
db.item.save ({"_id" : 2, "name" : "An ordinary dumbbell", "stock" : 5, "weight" : {"value" : 4, "unit" : "kilogram"}, "price" : {"value" : 667.98, "unit" : "yen"}}) 

Ou ceci:

db.unit.save ({"_id" : 1, "name" : "dollar"}) 
db.unit.save ({"_id" : 2, "name" : "yen"}) 
db.unit.save ({"_id" : 4, "name" : "gram"}) 
db.unit.save ({"_id" : 5, "name" : "kilogram"}) 

db.item.save ({"_id" : 1, "name" : "Pretty nice hot dog", "stock" : 10, "weight" : {"value" : 0.1, "unit" : [new DBRef ("unit", 4)]}, "price" : [new DBRef ("unit", 1)]}) 
db.item.save ({"_id" : 2, "name" : "An ordinary dumbbell", "stock" : 5, "weight" : {"value" : 4, "unit" : [new DBRef ("unit", 5)]}, "price" : [new DBRef ("unit", 2)]}) 

Les valeurs de le champ "unité" est immuable, je ne sais pas si je devrais le mettre dans une collection séparée.

Merci

Répondre

3

Je dirais que non. À moins que vous ayez besoin de la souplesse nécessaire pour interroger les unités (tous les éléments ayant un certain coût), je ne le ferais pas. Et si vous en avez besoin, vous pouvez toujours utiliser la fonction de réduction de carte pour obtenir tous les éléments d'un certain coût plus tard.