在应用程序级别生成mongoId和让mongo自动生成mongoId之间有什么区别?

3
在我之前的所有应用程序中,我都是在应用程序端生成ObjectID并将其提供给Mongo进行插入。另一方面,让Mongo自己生成它也没有问题。现在我想知道:有什么区别吗?
我知道有时候你需要稍后使用这个ObjectID,如果你自己生成它,你不需要担心它(我也知道如果你只是要求mongo插入它,并不保证它会被插入)。

许多驱动程序在客户端上都会这样做,所以这实际上是个人偏好的问题。 - undefined
如果你在谈论 _id,是的。(这对于许多 MongoDB 驱动程序来说是正确的)。其他字段是你的责任。 - undefined
1
_id实际上是设计为在应用程序端完成的 - undefined
1个回答

2

事实上,大多数驱动程序已经在应用程序端为 _id 字段生成了 ObjectId

ObjectId 文档指出,如果您在插入命令中未指定 _id 字段:

mongod 将添加 _id 字段并生成唯一的 ObjectId 作为其值

回答您的问题,实际上没有太大区别。就 ObjectId 内部而言,根据生成位置不同,您将拥有不同的机器 ID 和进程 ID...但您几乎永远不会关心这些。

在应用程序开发方面,如果您在插入之前生成 ObjectId,则可以在插入完成之前访问该值。因此,如果您同时插入引用文档,则可以更轻松地完成操作。

总之,我想说的是,让 mongod 生成您的 ObjectId 与自己生成它没有太大区别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接