惟一的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不容許咱們查詢文檔裏的數組大小。