創(chuàng)新互聯(lián)專注于鎮(zhèn)安企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),購物商城網(wǎng)站建設(shè)。鎮(zhèn)安網(wǎng)站建設(shè)公司,為鎮(zhèn)安等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
唯一的url slug:這種字段通常是唯一索引,以加速查詢和確保唯一。它提供了毅個有意義的url結(jié)構(gòu),利于seo。通常https://xxxx.com/products/5d0332be5d530000c4002a03的url顯得無意義,有意義的像:https://xxxx.com/products/wheelbarrow-9092
所以可以對它創(chuàng)建唯一索引:
????
要在商品目錄里查詢所有的列別,可以用$in操作符:
????db.categories.find({"_id":{"$in": product("category_ids")}})
db.orders.find({user_id: user["user_id"]})
查詢特定訂單的用戶:
db.users.findOne({"_id": order["user_id"]})
每個商品可以有多個評價,可以通過評論里存儲product_id來實現(xiàn)一對多關(guān)系
為啥要存儲username?如果是sql,會用username來關(guān)聯(lián)users表。但MongoDB不支持join,我們可以使用兩種方法:根據(jù)user集合的每個評論進行查詢或接受去范式。然而,根據(jù)每個評價進行查詢沒有必要,這指揮增加不必要的成本,尤其當(dāng)username經(jīng)常修改的時候。所以這里選擇優(yōu)化查詢而不是去范式化。
值得一提的是:對用戶來說可以選擇支持某個評價,這里在每個評價里保存評論用戶的id,這樣可以組織用戶多次投票;而且可以幫助我們查詢所有投票的用戶。
緩存了所有的投票數(shù)到helpful_votes,這可以讓我們基于投票對于有幫助的評論進行排序。緩存非常有用,因為mongodb不允許我們查詢文檔里的數(shù)組大小。