libmongo-client
===============

This is an alternative C driver for `MongoDB`_, with slightly
different goals than the official one:

libmongo-client is meant to be a stable (API, ABI and quality alike),
clean, well documented and well tested shared library, that strives to
make the most common use cases as convenient as possible.

Features
--------

The main purpose of this library is to provide a well maintained
implementation, that suits a wider range of needs than the original:

* Well documented, easy, clean and stable API.
* Comprehensive test suite, with over 90% code coverage, and
  increasing.
* Ability to easily construct mongodb commands, to be sent at a later
  time (comes in handy when one is trying to write from a separate
  thread).
* ReplicaSet support, with support for automatic reconnecting and
  discovery.
* Safe-mode support, to optionally enable extra safety checks on
  writes, that make sure the server accepted the write.
* Convenient APIs to work with BSON objects and MongoDB documents.
* Connection pooling.

Apart from these, the library is meant to be used as a shared library,
therefore API and ABI compatibility will be maintained, and only
broken when absolutely neccessary - in which case, a sufficiently
bumped version will be branched off.

Requirements
------------

Apart from `glib`_, there are no other hard dependencies. Though, one
will need `Perl`_ (with a suitable version of Test::Harness, along
with the prove utility) to run the test suite.

To build the documentation, `Doxygen`_ will be needed too.

Installation
------------

The library follows the usual autotools way of installation:

::

 $ git clone git://github.com/algernon/libmongo-client.git
 $ cd libmongo-client
 $ ./autogen.sh
 $ ./configure && make && make install

License
-------

Although the code is not based on any other driver, it is released
under the same Apache License, version 2.0 (included as the file
LICENSE).

.. _MongoDB: http://www.mongodb.org/
.. _glib: http://developer.gnome.org/glib/
.. _Perl: http://www.perl.org/
.. _Doxygen: http://www.stack.nl/~dimitri/doxygen/
