2

在我之前的所有应用程序中,我在应用程序端生成 ObjectID 并将其提供给 Mongo 以进行插入。另一方面,离开它并允许 Mongo 自己生成它并没有错。现在我想知道:有什么区别。

我知道有时你需要稍后使用这个 ObjectID,如果你自己生成它,你不应该担心它(我也知道,如果你只是要求 mongo 插入它并不一定保证它会插入它)

4

1 回答 1

1

确实,大多数驱动程序已经在应用程序端生成ObjectId_id字段。

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

mongod 添加 _id 字段并生成一个唯一的 ObjectId 分配为其值

要回答您是否有任何区别的问题,实际上我想说的不多。就ObjectId内部而言,您将拥有不同的机器 ID 和进程 ID,具体取决于它的生成位置……但您几乎不会担心这一点。

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

总而言之,我会说不mongod让自己生成与自己生成并没有太大区别ObjectId

于 2013-06-16T12:25:34.073 回答