Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver C
/ /

ObjectIDs

A Libbson oferece uma maneira simples de gerar ObjectIDs. Ele pode ser usado em um thread único ou multithread, dependendo de seus requisitos.

A estruturabson_oid_t representa um ObjectID no MongoDB. É um 96identificador de bits.

  • 4 bytes : o carimbo de data/hora UNIX no formato big-endian.

  • 5 bytes : Um número aleatório.

  • 3 bytes: um contador monotônico de 24bits incrementando de rand() em big-endian.

A maneira típica de classificar em C é qsort() usando. Portanto, a Libbson fornece uma qsort() função de chamada de resposta compatível com denominada bson_oid_compare . less than 1 Retorna, greater than 1 ou 0 dependendo da igualdade de duas estruturas bson_oid_t.

Se você simplesmente quiser comparar duas estruturas bson_oid_t para igualdade, use bson_oid_equal.

Para gerar um bson_oid_t, você pode usar o seguinte.

bson_oid_t oid;
bson_oid_init (&oid, NULL);

Você também pode analisar uma string contendo um bson_oid_t. A string de entrada DEVE ter 24 caracteres ou mais.

bson_oid_t oid;
bson_oid_init_from_string (&oid, "123456789012345678901234");
bson_oid_t oid;
bson_oid_init_from_string_unsafe (&oid, "123456789012345678901234");

Se você precisar armazenar itens em uma hashtable, convém usar o bson_oid_t como chave. A Libbson fornece uma função de hash apenas para esse fim. É baseado no hash DBB.

unsigned hash;
hash = bson_oid_hash (oid);

Você pode buscar facilmente a hora em que um bson_oid_t foi gerado usando 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);

Voltar

Tratamento de erros

Nesta página