Docs Menu
Docs Home
/ /

ObjectIDs

Libbson ofrece una forma sencilla de generar ObjectIDs. Puede utilizarse con un solo subproceso o con múltiples subprocesos, según sus necesidades.

El La estructurabson_oid_t representa una ObjectID En MongoDB, es un identificador de 96bits.

  • 4 bytes: La marca de tiempo de UNIX en formato big-endian.

  • 5 bytes : Un número aleatorio.

  • 3 bytes: un contador monótono de 24bit que se incrementa desde rand() en big-endian.

La forma típica de ordenar en C es qsort() usando. Por lo tanto, Libbson proporciona una qsort() función de devolución de llamada compatible con llamada bson_oid_compare. Esta función less than 1 devuelve, greater than 1 o 0 según la igualdad de dos estructuras bson_oid_t.

Si simplemente desea comparar dos estructuras bson_oid_t para verificar su igualdad, utilice bson_oid_equal.

Para generar un bson_oid_t, puede utilizar lo siguiente.

bson_oid_t oid;
bson_oid_init (&oid, NULL);

También puede analizar una cadena que contenga un bson_oid_t. La cadena de entrada DEBE tener 24 caracteres o más.

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

Si necesita almacenar elementos en una tabla hash, puede usar bson_oid_t como clave. Libbson proporciona una función hash para este propósito. Se basa en el hash DJB.

unsigned hash;
hash = bson_oid_hash (oid);

Puede obtener fácilmente la hora en que se generó un bson_oid_t utilizando 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);

Volver

Handling Errors

En esta página