電商網站的mongodb設計

圖片.png

唯一的url slug:這種字段通常是唯一索引,以加速查詢和確保唯一。它提供了毅個有意義的url結構,利於seo。通常https://xxxx.com/products/5d0332be5d530000c4002a03的url顯得無意義,有意義的像:https://xxxx.com/products/wheelbarrow-9092

所以可以對它創建唯一索引:

    圖片.png


圖片.png

要在商品目錄裏查詢所有的列別,可以用$in操作符:

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


圖片.png

圖片.png

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

查詢特定訂單的用戶:

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


圖片.png

圖片.png


每個商品可以有多個評價,可以通過評論裏存儲product_id來實現一對多關係

圖片.png

爲啥要存儲username?如果是sql,會用username來關聯users表。但mongodb不支持join,我們可以使用兩種方法:根據user集合的每個評論進行查詢或接受去範式。然而,根據每個評價進行查詢沒有必要,這指揮增加不必要的成本,尤其當username經常修改的時候。所以這裏選擇優化查詢而不是去範式化。

值得一提的是:對用戶來說可以選擇支持某個評價,這裏在每個評價裏保存評論用戶的id,這樣可以組織用戶多次投票;而且可以幫助我們查詢所有投票的用戶。

緩存了所有的投票數到helpful_votes,這可以讓我們基於投票對於有幫助的評論進行排序。緩存非常有用,因爲mongodb不允許我們查詢文檔裏的數組大小。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章