MongoDB:是否可以避免使用自动_id字段?

Vio*_*ffe 5 c++ mongodb

int我的文档中有一个唯一的ID类型字段.我正在ensureIndex这个领域,但我的文件仍然包含_id.我可以摆脱它吗?

Jus*_*ins 5

文档...

如果用户试图在没有提供 _id 字段的情况下插入文档,数据库将自动生成一个对象 id并将其存储在 _id 字段中。

但是,您可以将自己的值分配给_id ...

_id 值可以是除数组以外的任何类型,只要它是唯一的。

更好的问题是为什么要创建自己的唯一 ID,在其上建立索引并删除非常有用的自动索引的ObjectID _id

所有官方驱动程序都使用 ObjectID,它有很多非常好的方面:

  • 它有一个内置的时间戳(所以你不需要在你的文档中存储一个日期字段,你可以用它来按日期排序。)

  • 它是一个“全局的、统一增加的序列号”——也就是说,如果您需要对数据进行分片等,它在服务器之间仍然是唯一的。