如何在mongodb中生成唯一对象id

当我使用Mongodb和Java时,我想在客户端生成Object id。 但是,在插入记录之前,我必须首先查询mongodb以确保ObjectId()方法生成的id是唯一的。 有没有什么方法可以生成唯一的对象ID而无需两次访问mongodb?

对象ID与您在RDMS中使用的顺序ID不同。 如果根据对象ID规范正确生成它们,则无需担心它们是唯一的。

您所要做的就是确保始终创建新的Object ID而不是重用它们。

从MongoDB Java Driver 3.3.0开始,有以下方法可以创建ObjectIds。

使用不带参数的构造函数: 提供唯一的ObjectId

 1. ObjectId id1 = new ObjectId(); //Generates unique id 1.1. ObjectId id2 = ObjectId.get(); //Calls new ObjectId(); 

使用参数化构造函数: 参数会影响ObjectId的唯一性

 2. public ObjectId(byte[] bytes) // Receives a byte array of size 12. 3. public ObjectId(String hexString) //Receives a String that is a hexadecimal representation of 12 bytes. 4. public ObjectId(Date date) // Receives a Date object 5. public ObjectId(Date date, int counter) //Receives date and a counter 6. public ObjectId(Date date, int machineIdentifier, short processIdentifier, int counter) //Receives Date, MachineId, PID and counter. 7. public ObjectId(int timestamp, int machineIdentifier, short processIdentifier, int counter) //Receives Epoch time in sec, MachineId, PID and counter. 

了解ObjectId:

ObjectId由12个字节组成,分为以下几种:

  ObjectID layout 0 1 2 3 4 5 6 7 8 9 10 11 |time |machine |pid |inc |