반응형
mongodb에서 고유 객체 ID를 생성하는 방법
Java에서 Mongodb를 사용할 때 클라이언트에서 Object id를 생성하고 싶습니다.그러나 레코드를 삽입하기 전에 ObjectId() 메서드에서 생성된 id가 고유한지 확인하기 위해 mongodb를 먼저 쿼리해야 합니다.mongodb에 두 번 액세스하지 않고 고유한 객체 ID를 생성할 수 있는 방법이 있습니까?
데이터베이스를 참조하지 않고 클라이언트에서 ObjectId를 생성할 수 있습니다.이러한 ID는 고유합니다(동일한 개체 ID 두 개를 얻으려면 매우 노력해야 합니다).
ObjectId id = new ObjectId();
// or this
ObjectId id = ObjectId.get();
개체 ID는 RDMS에서 사용하는 순차 ID와 다릅니다.개체 ID 사양에 따라 올바르게 생성된 경우 개체가 고유한 것에 대해 걱정할 필요가 없습니다.
새 개체 ID를 재사용하는 대신 항상 새 개체 ID를 생성하기만 하면 됩니다.
MongoDB Java Driver 3.3.0 이후 ObjectId를 생성하는 방법은 다음과 같습니다.
매개 변수 없이 생성자 사용: 고유 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 |
언급URL : https://stackoverflow.com/questions/8723229/how-to-generate-unique-object-id-in-mongodb
반응형
'programing' 카테고리의 다른 글
Git 프로젝트의 'bin' 디렉터리 무시 (0) | 2023.05.25 |
---|---|
로그인 시 ssh-agent 시작 (0) | 2023.05.25 |
Python 스크립트 "Expected 2D array, got 1D array" 오류:? (0) | 2023.05.25 |
NPOI 워크북 이후 MemoryStream이 닫혀 있는 것 같습니다.글? (0) | 2023.05.25 |
가상 환경에서 Spyder를 실행하는 방법은 무엇입니까? (0) | 2023.05.20 |