电商网站的mongodb设计

图片.png

惟一的url slug:这种字段一般是惟一索引,以加速查询和确保惟一。它提供了毅个有意义的url结构,利于seo。一般https://xxxx.com/products/5d0332be5d530000c4002a03的url显得无心义,有意义的像:https://xxxx.com/products/wheelbarrow-9092sql

因此能够对它建立惟一索引:mongodb

    图片.png


图片.png

要在商品目录里查询全部的列别,能够用$in操做符:数组

    db.categories.find({"_id":{"$in": product("category_ids")}})缓存


图片.png

图片.png

db.orders.find({user_id: user["user_id"]})ide

查询特定订单的用户:优化

db.users.findOne({"_id": order["user_id"]})
url


图片.png

图片.png


每一个商品能够有多个评价,能够经过评论里存储product_id来实现一对多关系
排序

图片.png

为啥要存储username?若是是sql,会用username来关联users表。但mongodb不支持join,咱们可使用两种方法:根据user集合的每一个评论进行查询或接受去范式。然而,根据每一个评价进行查询没有必要,这指挥增长没必要要的成本,尤为当username常常修改的时候。因此这里选择优化查询而不是去范式化。索引

值得一提的是:对用户来讲能够选择支持某个评价,这里在每一个评价里保存评论用户的id,这样能够组织用户屡次投票;并且能够帮助咱们查询全部投票的用户。seo

缓存了全部的投票数到helpful_votes,这可让咱们基于投票对于有帮助的评论进行排序。缓存很是有用,由于mongodb不容许咱们查询文档里的数组大小。

相关文章
相关标签/搜索