2

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

我目前有这个架构:

UserModel{
username,
password,
ownsStore:}

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

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

4

1 回答 1

4

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

当您想对各种订单进行排序时,就会出现问题,那么您必须使用聚合查询,这与普通查询相比需要更多时间,或者您必须使用 forEach 或 map 函数手动对订单进行排序。

其次,如果嵌套数组起作用,您在更新文档时也会遇到问题,因为 mongoDB 不提供对深度嵌套数组的支持,因此您必须通过手动更新数组来一次又一次地设置数组的值。

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

所以给订单定义不同的schema,并在每个订单中添加一个唯一的用户ID,这样映射就变得容易了

于 2018-05-15T11:43:23.963 回答