Libbson은 ObjectID를 생성하는 간단한 방법을 제공합니다. 요구 사항에 따라 단일 스레드 또는 다중 스레드 방식으로 사용할 수 있습니다.
bson_oid_t 구조는 ObjectID
MongoDB 에서 를 나타냅니다.96비트 식별자입니다.
구성
4 바이트 : 빅엔디안 형식의 UNIX 타임스탬프입니다.
5 바이트: 난수입니다.
3 바이트 : 빅 엔디안에서
rand()
부터 증가하는 24비트 단조적 카운터입니다.
ObjectID 정렬
C 에서 정렬하는 일반적인 방법은 을 사용하는 qsort()
것입니다. 따라서 Libbson은 qsort()
bson_oid_compare라는 호환 콜백 함수를 제공합니다.less than 1
greater than 1
0
두 bson_oid_t 구조의 동등성에 따라, 또는 를 반환합니다.
객체 ID 비교
단순히 두 개의 bson_oid_t 구조가 동일한지 비교하려면 bson_oid_equal을 사용합니다.
생성 중
bson_oid_t 를 생성하려면 다음을 사용할 수 있습니다.
bson_oid_t oid; bson_oid_init (&oid, NULL);
ObjectId 문자열 구문 분석
bson_oid_t 를 포함하는 문자열을 구문 분석할 수도 있습니다. 입력 24 문자열은 반드시 자 이상이어야 합니다.
bson_oid_t oid; bson_oid_init_from_string (&oid, "123456789012345678901234");
bson_oid_t oid; bson_oid_init_from_string_unsafe (&oid, "123456789012345678901234");
객체 ID 해싱
항목을 해시 테이블에 저장 해야 하는 경우 bson_oid_t를 키로 사용할 수 있습니다. Libbson은 이러한 목적을 위해 해시 함수를 제공합니다. 이는 DJB 해시를 기반으로 합니다.
unsigned hash; hash = bson_oid_hash (oid);
ObjectId 생성 시간 가져오기
bson_oid_get_time_t를 사용하여 bson_oid_t가 생성된 시간을 쉽게 가져올 수 있습니다.
time_t t; t = bson_oid_get_time_t (oid); printf ("The OID was generated at %u\n", (unsigned) t);