Menu Docs
Página inicial do Docs
/ / /
Driver C
/ /

ObjectIDs

Nesta página

  • composição
  • Classificando ObjectIDs
  • Comparação de ID de objetos
  • Gerando
  • Analisando strings ObjectId
  • ObjectIDs de hash
  • Buscando tempo de criação do ObjectId

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.

  • 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 é 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.

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

Para gerar um bson_oid_t, use 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 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);

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);

Voltar

Tratamento de erros