The following guide will step you through the process of connecting to MongoDB and updating a document.
The following code example creates a new mongoc_client_t
that we will use to communicate with MongoDB.
The Connection String URI component is quite comprehensive.
Using our mongoc_client_t
, we get a handle to a mongoc_collection_t
which represents the remote collection.
We create a new document, initialized with an _id
and a field named hello
and insert it into the test.test
collection.
Then, using that same _id
, we update the document, overwriting an existing field and adding a new field.
Lastly, we release all of our heap allocated structures.
#include
#include
#include
int
main (int argc,
char *argv[])
{
mongoc_collection_t *collection;
mongoc_client_t *client;
bson_error_t error;
bson_oid_t oid;
bson_t *doc = NULL;
bson_t *update = NULL;
bson_t *query = NULL;
mongoc_init ();
client = mongoc_client_new ("mongodb://localhost:27017/");
collection = mongoc_client_get_collection (client, "test", "test");
bson_oid_init (&oid, NULL);
doc = BCON_NEW ("_id", BCON_OID (&oid),
"hello", BCON_UTF8 ("world!"));
if (!mongoc_collection_insert (collection, MONGOC_INSERT_NONE, doc, NULL, &error)) {
printf ("%s\n", error.message);
goto fail;
}
query = BCON_NEW ("_id", BCON_OID (&oid));
update = BCON_NEW ("$set", "{",
"hello", BCON_UTF8 ("Everybody!"),
"updated", BCON_BOOL (true),
"}");
if (!mongoc_collection_update (collection, MONGOC_UPDATE_NONE, query, update, NULL, &error)) {
printf ("%s\n", error.message);
goto fail;
}
fail:
if (doc)
bson_destroy (doc);
if (query)
bson_destroy (query);
if (update)
bson_destroy (update);
mongoc_collection_destroy (collection);
mongoc_client_destroy (client);
return 0;
}
]]>
Let's use GCC
and pkg-config
to compile
When using the MongoDB C Driver, you must call mongoc_init()
at the beginning of your application.
This allows the driver to initialize it's required subsystems.
Failure to do so will result in a runtime crash.
Now let's run it!
Let's make a query with the MongoDB shell now and see what happened!