2014-01-05 23 views
0

我是MongoDB的新手,我想为电子商务网站设计模式。 我只问一个例子,我希望它能帮助我完成整个设计。为少数列表中的项目设计一个MongoDB模式

要求:

  • 项目至少包含名称和价格。
  • 购物车是用户选择的项目列表。
  • 心愿单是用户选择的项目列表。
  • 如果管理员编辑一个项目,它应该影响购物车和心愿。

我考虑的一些选项:你的购物车和收藏

  1. 数组项的ID。
  2. 带嵌入式物品的购物车和嵌入物品的愿望清单。

有什么优点和缺点? 有没有另一种设计方法?

任何示例将会有所帮助,谢谢!

+0

所以,据我所知,你会想要这样的东西:'用户:{cart:[{itemID:someID,price:price}] ,愿望清单:[{itemID:someID}]' - 对于用户文档,并且Item文档将拥有它的项目集合。然后在用户文档中存储Item * references *。 – tymeJV

+0

@tymeJV在这种情况下,物品的价格发生了什么变化? – user80042

+1

如果项目价格发生变化,您在项目文档中更改该项目,则用户文档将仅存储参考。我只把“价格”作为一个例子(显然是坏的),“制造商”可能是更好的选择。关键是,你存储对其他文件的引用:) – tymeJV

回答

1
//item 
{ 
    _id : Number, 
    name : String, 
    price : Number 
} 
//user 
{ 
    _id : Number, 
    name : String, 
    profile : { 
     location : String, 
     age : Number, 
     created_at : Date, 
     /*something something something*/ 
    }, 
    wishlist : { 
     item_id : [Number] // store item's _ids 
    } 
} 

我不认为使用数据库来存储购物车数据是常见的方式。 通常你可以使用session/get/post/cookie代替