BSON_OID_T(3)

BSON ObjectID Abstraction

SYNOPSIS

            #include <bson/bson.h>

            typedef struct {
               uint8_t bytes[12];
            } bson_oid_t;

DESCRIPTION

The bson_oid_t <> structure contains the 12-byte ObjectId notation defined by the BSON ObjectID specification <https://www.mongodb.com/docs/manual/reference/object-id/>.

ObjectId is a 12-byte BSON type, constructed using:

    •   a 4-byte value representing the seconds since the Unix epoch (in Big Endian).

    •   a 5-byte random value.

    •   a 3-byte counter (Big Endian), starting with a random value.

STRING CONVERSION

You can convert an Object ID to a string using bson_oid_to_string() <> and back with bson_oid_init_from_string() <>.

HASHING

A bson_oid_t <> can be used in hashtables using the function bson_oid_hash() <> and bson_oid_equal() <>.

COMPARING

A bson_oid_t <> can be compared to another using bson_oid_compare() <> for qsort() style comparing and bson_oid_equal() <> for direct equality.

VALIDATING

You can validate that a string containing a hex-encoded ObjectID is valid using the function bson_oid_is_valid() <>.

EXAMPLE

            #include <bson/bson.h>
            #include <stdio.h>

            int
            main (int argc, char *argv[])
            {
               bson_oid_t oid;
               char str[25];

               bson_oid_init (&oid, NULL);
               bson_oid_to_string (&oid, str);
               printf ("%s\n", str);

               if (bson_oid_is_valid (str, sizeof str)) {
                  bson_oid_init_from_string (&oid, str);
               }

               printf ("The UNIX time was: %u\n", (unsigned) bson_oid_get_time_t (&oid));

               return 0;
            }

Author
MongoDB, Inc

Copyright
2009-present, MongoDB, Inc.