mongodb中连续id的可能性



我目前正在使用mongodb开发一个节点应用程序。我目前正在查找一个项目的值,如果它存在,删除它,如果不存在,然后写入值(基本上是切换)。

在我最近4次这样做的时候,我得到了以下自动生成的_ids:

"_id" : ObjectId("567f566206eedcc838ce86a0")
"_id" : ObjectId("567f566206eedcc838ce86a1")
"_id" : ObjectId("567f566206eedcc838ce86a2")
"_id" : ObjectId("567f566206eedcc838ce86a3")

如果有什么不同的话,我目前正在使用Windows。根据我对mongo id的理解,这些id应该以相当随机的方式生成,那么我是如何获得3个连续的id的呢?(无论如何,我不会更改ID)。

MongoDB id实际上不是随机的,并且遵循一个非常严格的规则:

"ObjectId是一个12字节的BSON类型,使用构造

一个4字节的值,表示自Unix epoch以来的秒数,
一个3字节的机器标识符,
一个2字节的进程id,以及
一个3字节计数器,从一个随机值开始。"

https://docs.mongodb.org/manual/reference/object-id/

虽然最后一个值是随机的,但假设你几乎在同一时间完成了这一代,这并不太可能。

最新更新