2010-12-14 4 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)]}) 

값 "unit"필드는 변경 불가능합니다. 별도의 컬렉션에 넣어야할지 모르겠습니다.

감사 MongoDB를 워드 프로세서에서

답변

3

아니요. 단위 (특정 비용이있는 모든 항목)에서 쿼리 할 수있는 유연성이 필요한 경우가 아니라면 그렇게하지 않을 것입니다. 필요한 경우 map reduce를 사용하여 나중에 특정 비용의 모든 항목을 나중에 얻을 수 있습니다.