他說這樣比較方便查詢,是呀,傻子也知道這樣方便查詢。我質疑說這樣儲存時會不好,但他說有shortId什麼的,求解答!
给我你的怀抱2017-04-25 09:04:36
這個要具體業務具體分析了。
如果把品牌名稱設定成 ObjectId
的话,就说明有另外一个 collection
存放著品牌。這麼做是典型的關係型資料庫的方式,對 mongodb 來說,每次要獲得商品的品牌名,就要多一次讀操作。
如果設定成String
,一次操作即可取出全部商品資訊和品牌名,但修改品牌的時候卻非常麻煩,如果在一次請求中還要獲得品牌的一些信息,比如品牌所在的國家,那麼還是要再做一次查詢,擴充性不夠好。
如果設定成 Object
如:
javascript
{ item:"", price:100, brand:{ name: "micorsoft", country: "US" } }
這麼做可以解決擴展性的問題,而且查詢速度也很快,如果商品品牌資訊不怎麼更新的話,那麼我建議這麼做。雖然增加了資料冗餘程度,但是提高了查詢速度,這就是反範式。
如果品牌資訊經常更新的話,那麼用 ObjectId
還是好的,雖然多了一次查詢,但是提高了可靠性。