# mdbtools
Python and UNIX CLI utilities to simplify common MongoDB DevOps tasks  
Michael S. Noble  
mnoble@broadinstitute.org  

There are a number of common operations one would like to perform upon
MongoDB databases directly from a UNIX command line, for scalability, 
repeatability and automation (e.g. cron jobs).  This package makes it very
easy to do that, without having to write or think in Javascript OR sacrificing
choice of what key bindings you may edit with.  The package also offers a
simple object framework, which not only maintains a consistent look and feel
amongst all tools, but also makes it very straightforward to add new ones.
To better resonate with the UNIX environment, many utilities in the mdbtools
suite have been given names which reflect UNIX tools of similar purpose.  The
suite currently includes:

* **mdbcat**     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_display contents of one or more collections, as JSON or TSV/CSV tables_
* **mdbcp**      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_copy a collection_
* **mdbindex**   &nbsp;&nbsp;&nbsp;&nbsp;_add/remove indexes to/from a collection_
* **mdbload**    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_load a table into a DB_
* **mdbls**      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_list the collections in a DB_
* **mdbmv**      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_rename (move) a collection_
* **mdbquery**   &nbsp;&nbsp;&nbsp;_issue general purpose key=value queries (with timing info and more, e.g. to assess indexes)_
* **mdbrm**      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_remove a collection_
* **mdbtouch**   &nbsp;&nbsp;&nbsp;_create a new, empty collection_
* **mdbstats**   &nbsp;&nbsp;&nbsp;&nbsp;_display summary statistics for one or more collections in a DB_

Some of these tools can be extended in a natural way to operate upon entire databases or server instances, not just collections; this has been considered and may appear in a future release.
