Review: 4 free, open source management GUIs For MongoDB
Genghis, phpMoAdmin, RockMongo, and UMongo free MongoDB database management from the command line
When you drill down to a single collection, RockMongo displays that collection's documents in the lower portion of the work area. A query text box is displayed in the upper portion. Each document appears in its own mini-window that's topped with a list of menu commands for operating on that document. You can update (edit) a document, delete it, add a new field, or duplicate it. (Duplicating a document produces a new document whose fields have the same values as the original, with the exception of the
_id field.) There's also a Text menu item that, when clicked, displays the document in a text box, suitable for cutting and pasting.
The Query menu selection (above the text box) reveals one of RockMongo's welcome nuances. Typically, when you enter a document (and MongoDB queries are expressed as documents) you specify its structure in BSON. However, PHP applications almost always represent MongoDB's documents using PHP's syntax for associative arrays. Because RockMongo is written in PHP, one might expect it to recognize only the associative array syntax. But RockMongo lets you choose either.
Type in a query, click Submit, and the documents satisfying the query are displayed in the lower half of the work area, 10 at a time. Click the Explain button to produce a document that is MongoDB's "explanation" of how queries are handled in the current environment. There's plenty of good information to be had from this. For example, for queries on a sharded cluster, the explanation document will tell you whether the server executed shard queries sequentially or in parallel. You can see the number of milliseconds the query required on each shard (there is a subdocument for each shard server). You can also see the number of documents scanned on each shard. From this I learned that all of my documents had been placed on a single shard of my two-shard server cluster.
RockMongo can be extended via plug-ins. A RockMongo plug-in operates as a sort of combination filter and event listener. RockMongo exports workflow points at which filters can be attached. When you register a plug-in, the filters are hooked to those points. For example, the
SERVER_MENU_FILTER hook can be used to add menu items to the Server menu. Plug-ins can also define controllers, which can be associated with buttons to provide additional functionality in RockMongo. Currently, three plug-ins are available: a
mapreduce plug-in, a sharding plug-in, and a plug-in that provides tools for the MongoDB system.js collection, which stores MongoDB's equivalent to stored procedures.
RockMongo's documentation is painfully limited -- though this is true of all four products in this review. If you're looking for an online manual, all you'll find is a wiki page displaying a list of features, a link to installation instructions, and a link to the download page. You'll also find a Manuals item on the main RockMongo menu, but it's no more than a list of links to other Web pages, mainly pages on the MongoDB website.
The entire layout of RockMongo is well thought out, and lots of good statistics are available at every level. Setup is simple, the transfer function is handy, and RockMongo's ability to traffic in either BSON or the PHP syntax is particularly welcome.
UMongo is a stand-alone Java application created by Antoine Girbal, who works for 10Gen as a software engineer. (Girbal is quick to say that UMongo is his own creation and is in no way endorsed by 10gen itself.) UMongo requires at least Java 1.6.
Launch UMongo, open its connection dialog, connect to a running MongoDB server, and you're presented with a three-pane window: navigation pane on the left, current object statistics pane in the upper right, and results pane in the lower right. The content of the statistics pane depends on which component is selected in the navigation pane. Select a sharded database cluster, for example, and you're shown connection information for the cluster server itself (such as the host running the mongos instance that handles request routing for that cluster), as well as connection information for each shard member.
Items in the results pane are virtually always BSON documents. UMongo displays documents in a tree control, so you can expand or collapse the output as needed. In fact, tree controls are used throughout UMongo. The hierarchical view in the navigation pane, for example, is a tree control.