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