ObjectIDs
Nesta página
A Libbson oferece uma maneira simples de gerar ObjectIDs. Ele pode ser usado em um thread único ou multithread, dependendo de seus requisitos.
O bson_oid_t estrutura representa um ObjectID
no MongoDB. É um identificador 96bits.
composição
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.
Classificando ObjectIDs
A maneira típica de classificar em C é usando qsort()
. Portanto, a Libbson fornece uma qsort()
função de chamada de resposta de chamada compatível chamada bson_oid_compare. Retorna less than 1
, greater than 1
ou 0
dependendo da igualdade de dois bson_oid_t estruturas.
Comparação de ID de objetos
Se você simplesmente quiser comparar dois bson_oid_t estruturas para igualdade, use bson_oid_equal.
Gerando
Para gerar um bson_oid_t, use o seguinte.
bson_oid_t oid; bson_oid_init (&oid, NULL);
Analisando strings ObjectId
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");
ObjectIDs de hash
Se você precisar armazenar itens em uma tabela de hash, convém usar o bson_oid_t como a chave. A Libbson fornece uma função de hash apenas para esse fim. É baseado no hash DBB.
unsigned hash; hash = bson_oid_hash (oid);
Buscando tempo de criação do ObjectId
Você pode buscar facilmente o tempo 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);