mongoose - 關於mongodb的建模,有人建議我 把 「商品」的「品牌名稱」 從ObjectId 轉為 string,這樣好嗎?
天蓬老师
天蓬老师 2017-04-25 09:02:36
0
1
664

他說這樣比較方便查詢,是呀,傻子也知道這樣方便查詢。我質疑說這樣儲存時會不好,但他說有shortId什麼的,求解答!

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(1)
给我你的怀抱

這個要具體業務具體分析了。
如果把品牌名稱設定成 ObjectId 的话,就说明有另外一个 collection 存放著品牌。這麼做是典型的關係型資料庫的方式,對 mongodb 來說,每次要獲得商品的品牌名,就要多一次讀操作。

如果設定成String ,一次操作即可取出全部商品資訊和品牌名,但修改品牌的時候卻非常麻煩,如果在一次請求中還要獲得品牌的一些信息,比如品牌所在的國家,那麼還是要再做一次查詢,擴充性不夠好。

如果設定成 Object 如:

javascript{
    item:"",
    price:100,
    brand:{
        name: "micorsoft",
        country: "US"
    }
}

這麼做可以解決擴展性的問題,而且查詢速度也很快,如果商品品牌資訊不怎麼更新的話,那麼我建議這麼做。雖然增加了資料冗餘程度,但是提高了查詢速度,這就是反範式。

如果品牌資訊經常更新的話,那麼用 ObjectId 還是好的,雖然多了一次查詢,但是提高了可靠性。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板