在我之前的所有应用程序中,我都是在应用程序端生成ObjectID并将其提供给Mongo进行插入。另一方面,让Mongo自己生成它也没有问题。现在我想知道:有什么区别吗?
我知道有时候你需要稍后使用这个ObjectID,如果你自己生成它,你不需要担心它(我也知道如果你只是要求mongo插入它,并不保证它会被插入)。
我知道有时候你需要稍后使用这个ObjectID,如果你自己生成它,你不需要担心它(我也知道如果你只是要求mongo插入它,并不保证它会被插入)。
事实上,大多数驱动程序已经在应用程序端为 _id
字段生成了 ObjectId
。
ObjectId
文档指出,如果您在插入命令中未指定 _id
字段:
mongod 将添加 _id 字段并生成唯一的 ObjectId 作为其值
回答您的问题,实际上没有太大区别。就 ObjectId
内部而言,根据生成位置不同,您将拥有不同的机器 ID 和进程 ID...但您几乎永远不会关心这些。
在应用程序开发方面,如果您在插入之前生成 ObjectId
,则可以在插入完成之前访问该值。因此,如果您同时插入引用文档,则可以更轻松地完成操作。
总之,我想说的是,让 mongod
生成您的 ObjectId
与自己生成它没有太大区别。
_id
,是的。(这对于许多 MongoDB 驱动程序来说是正确的)。其他字段是你的责任。 - undefined