大家用MongoDB作为数据库时,是使用自身的_id字段当做主键(外键)还是使用自己定义的id?

最近在做一个node项目,后台使用mongoDB。
发现MongoDB中存在默认主键_id,我也可以自己设置一个序列如mysql那样。
如果使用默认主键的话,返回的JSON字符串里面使用的是_id,这点对前端不怎么友好。
问题是,我是否需要使用自定义主键,考量是什么?

阅读 14k
2 个回答

一般不用自己定义主键,除非你有特殊的需求

没有明确的要求让你不要用ObjectId做主键。所以如果你有更好的选择,用你自己的主键就可以了,没有什么不可以。
问题在于,这个_id必须全局唯一,如何达到全局唯一并不是一件容易的事情,所以很多人就掉进了使用自增ID的误区。自增ID是一个非常差的选择,原因我在这个问题里做过解释。如果你的系统中正好能做到全局唯一,又可以避开自增ID的陷阱,那就自定义就好了。

推荐问题
宣传栏