惟一的url slug:这种字段一般是惟一索引,以加速查询和确保惟一。它提供了毅个有意义的url结构,利于seo。一般https://xxxx.com/products/5d0332be5d530000c4002a03的url显得无心义,有意义的像:https://xxxx.com/products/wheelbarrow-9092sql
因此能够对它建立惟一索引:mongodb
要在商品目录里查询全部的列别,能够用$in操做符:数组
db.categories.find({"_id":{"$in": product("category_ids")}})缓存
db.orders.find({user_id: user["user_id"]})ide
查询特定订单的用户:优化
db.users.findOne({"_id": order["user_id"]})
url
每一个商品能够有多个评价,能够经过评论里存储product_id来实现一对多关系
排序
为啥要存储username?若是是sql,会用username来关联users表。但mongodb不支持join,咱们可使用两种方法:根据user集合的每一个评论进行查询或接受去范式。然而,根据每一个评价进行查询没有必要,这指挥增长没必要要的成本,尤为当username常常修改的时候。因此这里选择优化查询而不是去范式化。索引
值得一提的是:对用户来讲能够选择支持某个评价,这里在每一个评价里保存评论用户的id,这样能够组织用户屡次投票;并且能够帮助咱们查询全部投票的用户。seo
缓存了全部的投票数到helpful_votes,这可让咱们基于投票对于有帮助的评论进行排序。缓存很是有用,由于mongodb不容许咱们查询文档里的数组大小。