我正在设计一个简单的MongoDB数据库的模式,其中将有一个供客户使用的集合。
识别客户的自然方式将使用他们的官方身份证ID(6个数字和一个字母,对于该国的每个人都是唯一的)。另一种方法是让MongoDB选择_id字段值并将卡ID用作另一个字段。
选择一个包含6个数字和一个字母为_id的字符串,或选择Mongo创建的ObjectId的优缺点是什么建议?
答案 0 :(得分:4)
呃,这是旧的“surrogate key与非代理(自然)关键”讨论。这是一场火焰战......
我认为代理键(即ObjectIds
)是可行的方法。对“自然”键(官方身份证号码)的主要反对意见是:
...以及特定于MongoDB的参数
ObjectId
有许多属性:带有时间戳,而是单调的。自然键通常无法做出这样的保证