用于电子商务的MongoDB数据库架构

时间:2018-05-15 10:24:34

标签: node.js database mongodb express e-commerce

我目前正在构建一个多用户电子商务应用程序,(如shopify但其他部门)。我使用nodejs与mongoDB。存储订单的最佳做法是什么?

我目前有这个架构:

UserModel{
username,
password,
ownsStore:}

StoreModel{storeID,
owner:,
products:[productarray],
categories:[],
orders:[array with all OrderModel{
orderid:
oderitems}]}

商店中的Orders数组会变大吗? 是不是更好的做法将订单放在自己的搭配中并通过使用find将它们分配给商店并仅在商店的订单数组中保存ObjectId?

1 个答案:

答案 0 :(得分:0)

当数据变大时,此架构将为您创建问题。您应该为每个订单创建不同的对象,并使用任何唯一的用户ID映射它们,而不是这样做。

当您想要对各种订单进行排序然后您必须使用聚合查询时,问题就会出现,与常规查询相比,这将花费更多时间,或者您必须使用forEach或map函数手动对订单进行排序。

其次,如果嵌套数组发挥作用,您在更新文档时也会遇到问题,因为mongoDB不支持深层嵌套数组,因此您必须通过手动更新数组来反复设置数组的值。

如果你制作不同的物品,那么所有这些事情都会变得更容易,更快捷。 我从事过电子商务项目并且遇到过这些问题,所以后来我将它们更改为每个订单的不同对象。

因此,为订单定义不同的架构,并在每个订单中添加唯一的用户ID,以便映射变得简单