如何在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 |