他说这样更方便查询,是呀,傻子也知道这样便于查询。我质疑说这样在存储时会不好,但他说有shortId什么的,求解答!
给我你的怀抱2017-04-25 09:04:36
这个要具体业务具体分析了。
如果把品牌名设置成 ObjectId
的话,就说明有另外一个 collection
存放着品牌。这么做是典型的关系型数据库的方式,对于 mongodb 来说,每次要获得商品的品牌名,就要多一次读操作。
如果设置成 String
,一次操作即可取出全部商品信息和品牌名,但修改品牌的时候却非常麻烦,如果在一次请求中还要获得品牌的一些信息,比如品牌所在的国家,那么还是要再做一次查询,扩展性不够好。
如果设置成 Object
比如:
javascript
{ item:"", price:100, brand:{ name: "micorsoft", country: "US" } }
这么做可以解决扩展性的问题,而且查询速度也很快,如果商品品牌信息不怎么更新的话,那么我建议这么做。虽然增加了数据冗余程度,但是提高了查询速度,这就是反范式。
如果品牌信息经常更新的话,那么用 ObjectId
还是好的,虽然多了一次查询,但是提高了可靠性。