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