C Driver for MongoDB
Switch branches/tags
Pull request Compare This branch is 399 commits behind 10gen:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


MongoDB C Driver

This is then 10gen-supported MongoDB C driver. There are two goals for this driver. The first is to provide a strict, default compilation option for ultimate portability, no dependencies, and generic embeddability.

The second is to support more advanced, platform-specific features, like socket timeout, by providing an interface for platform-specific modules.

Until the 1.0 release, this driver should be considered alpha. Keep in mind that the API will be in flux until then.


First check out the version you want to build. Always build from a particular tag, since HEAD may be a work in progress. For example, to build version 0.4, run:

git checkout v0.4

You can then build the driver with scons:


Running the tests

Make sure that you're running mongod on on the default port (27017). The replica set test assumes a replica set with at least three nodes running at and starting at port 30000. Note that the driver does not recognize 'localhost' as a valid host name.

To compile and run the tests:

scons test

Error Handling

Most functions return MONGO_OK or BSON_OK on success and MONGO_ERROR or BSON_ERROR on failure. Specific error codes and error strings are then stored in the err and errstr fields of the mongo and bson objects. It is the client's responsibility to check for errors and handle them appropriately.


The docs are built using Sphinx and Doxygen. If you have these tools installed, then you can build the docs with scons:

scons docs

The html docs will appear in docs/html.


You can report bugs, request new features, and view this driver's roadmap using JIRA.


  • Gergely Nagy - Non-null-terminated string support.
  • Josh Rotenberg - Initial Doxygen setup and a significant chunk of documentation.


Unless otherwise specified in a source file, sources in this repository are published under the terms of the Apache License version 2.0, a copy of which is in this repository as APACHE-2.0.txt.