2010-12-14 2 views
3

Я запутался, что это лучший формат для следующего случая: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 

Это:

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"}}) 

Или это:

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)]}) 

Значения поле «единица» является неизменным, я не знаю, должен ли я поместить его в отдельную коллекцию.

Благодаря

ответ

3

Я бы сказал, нет. Если вам не нужна гибкость в запросе у единиц (все предметы с определенной стоимостью), я бы этого не сделал. И если вам нужно, вы всегда можете использовать карту уменьшить, чтобы позже получить все предметы определенной стоимости.

Смежные вопросы