MongoCola is the tool which will help you manage MongoDB easily.
With the helping of this tool you can :          
Create or Drop Database,Collect or Document Element by GUI interface.
Monitor the realtime status of MongoDB .
Run Shell functions without remembering the command syntax.
Import Data from Access Database (Windows OS Only)
This tool will be migrated to Mono platform for Linux OS as soon as possible :)
In order to prevent GUI problem and migrated to Mono easliy,skin system is removed :(


This product is FREE.
Introduce How to get Mongo-Cola

Source Code
You can download the source code from GitHub:
Source @GitHub
Report bugs,give advice Here:Issues
Welcome to join the develop team.
Executable File
You can download the Executable File [ZIP package]from GitHub: Downloads @GitHub
Anyone can help me to compile the source code on Mono platform? I need an executable file for linux. please email me: email address
Software Requirements
MongoCola is a Windows® desktop Client/GUI application. To run properly you must have one of these versions of .NET Framework installed:
  • .Net Framework 3.5
  • MongoDB 2.0.4
  • C# Offical Driver(1.4.1) if you download the executable file(RAR or ZIP package) contains the driver DLL,you don't need to download it again.
  • Linux User:apttitude install libmono-windowsbase3.0-cil(Thanks to Voltron for test Mono on ubuntu.)
  • zTree Jquery-Plugin,Jquery(Rar or Zip Package contains)
About This Document
Thanks MoLing for help me correct this document.
Thanks zTree Jquery Plugin http://www.baby666.cn/v3/main.php#_zTreeInfo
Thanks 10gen for C# Driver
Thanks friends @ www.Cnblogs.com for advice,test,supports
Last Editor:2012-04-15

Release Note
========================================================================
MongoCola Release Note
========================================================================
MongoCola is developed by Microsoft .NET (C#)
You need install .NET framework3.5 to run it.
The C# Mongo driver is mongo offical C# driver 1.4.1.
Test Based on MongoDB 2.0.4
MongoCola is free and open source.

========================================================================
Release History
========================================================================
Ver 1.22 2012/04/15 
1.Show the process at status bar when import data from Access And Upload Folder  
2.Fix the bug of delete document.Now only the record has a _id ObjectKey can be delete.
3.DirectorySeparatorChar can be customize.

========================================================================
Ver 1.21 2012/04/08 [First Version @Accenture CDC]
WebForm
    1.You can select a connection at connection list page to jump to connection detail page.
    2.Show Connection Status when click the connection node.
    3.Show Database Status when click the database node.
    4.Show Collection records when click the collection node.
    
Main form:
    1.Display server role before connection name at node text.
    
========================================================================

========================================================================
Ver 1.20 2012/03/31 [Last Version @IBM GDC]
C# Driver:
    upgrade to C# offical driver 1.4.1

Main form:
    1.Replset,Cluster will show member server at treeview.
    2.Fix the bug :  when disconnect a connection witch can't be connected a exception happened.
    3.Close ViewTabs of collection when the database witch the collection belongs to is droped. 

Connection Config:
    1.Add some argument of connection,eg.connectionTimeout.
    2.Connection name is editable.

GFS View:
    1.Add Content-Type List (windows only)
    2.Collection fs.chunk is shown at collection list 
    3.Now you can delete multi Files.
    4.Upload Folder can select if subfolder is ignor or not.
	 
Replset and sharding Manger
    1.Redesign the way to manage the replset and sharding.
    2.Skip EndOfStreamException.
	     
Others
    1.If getStatus exception happend,stop the auto refresh to avoid endless exception.
    2.fixed the bug that the userform show confirmbox instead of messagebox.

========================================================================
Ver 1.13 2012/03/23
All:
    1.Add Icon to form.
    2.Set all popup window's FormBorderStyle to FormBorderStyle.FixedSingle;

Main:
    1.Put count,distinct,group,mapreduce menuitme to Aggregation
    2.Fix the bug when a server is shutdown by this application,the serverlist is not update

GFS:
    1.Upload Folder
    2.Before Upload file,let user choose what to do if file is existed.
    3.The remote filename can be the name or Fullname of a localfile

Collection DataView
    1.Set start position when view data records
    2.New TreeListView for show data records
    3.Fixed the bug,if the KEY_ID field is not the first item of the document.
    4.Add new document by json String.
    5.Fixed the display field bugs of datafilter
    6.Make the KEY_ID field always IsShow to true. 

Connection List
    1.Double Click to start at connection list form.

MessageBox
    1.Make the visualStyle of Messagebox better.

========================================================================
Ver 1.10 2012/03/16
System:
	1.Set all popup form backcolor to white.
	2.Add some Language Resource

Main Form:
    1.DataView Refresh function
	2.Add Tooltips to Dataview and Collection Nodes

Status Control:
	1.Fixed Sort Bug at Collection Status
	2.Fixed the bug while the user login without admin auth. 
	   Thanks to mailto:mail.james@qq.com to report the bug
	   

DataView Control:
	1.Fixed "Open File in Editor" can't be use after DataView is refreshed.
	2.Use Offical C# Driver .ToJson() for textview
		
Connection List Form:
    1.Fix the bug if there is no connection is selected,the form can't close by click Ok button
	2.Change the command Text "Cancel" to "close"

Add Connection
    1.Fix bug:The ConnectionString will not be remove in config file.
	2.Add "Test" Function to test a connection is enable or not.

========================================================================
Ver 1.10(Beta) 2012/03/16
1.Multi Collection View is ready.
2.Divide all collections into GFS,Javascript,User,Gerneral Collections,System Collections 5, Groups
3.Add comfirm password at "Add New User" form.
4.Add some icons.
5.Add sort function to file list view.
6.Change user password and readonly.
7.DataBase profilling level function.
8.Create/Drop Javascript 
9.Records count at display at perpage can be set at dataview.
10.Capped Collection Restrictions.
 
========================================================================
Ver 1.05 2012/03/10

1.Change the Name of ClusterInfo to CurrentOperationInfo.
2.Add Switch Auto Refresh Botton at Status form.
3.Modify the way of get the total count of a collection,and the performance is up.Thanks to Shadower (cnblogs.com).
4.Fixed Some bugs in GUI
5.Modify repairDatabase from "compact" Command to "repairDatabase" Command.
6.Catch TimeOut Exception When Run Command

========================================================================
Ver 1.04 2012/03/07

1.Open In Native Editor at Textview
2.Compact Collection
3.Advance options for Create a Collection
4.Show Server Status at Mainform
5.Add View ToolStrip and move DataNav to View Toolstrip.
6.Fix display bug at connection list form.
7.Change Online userguide to local
8.Fix the bug that the icon of treeview can't be display when the config.xml file not exist.

========================================================================
Ver 1.03 2012/01/13

1.Set All Form's FontSize to 9.75pt.
2.Show CommandText After a command is completed.
3.Clear Navi Record Label After Clear.
4.Fix a bug when show fileInfo at TableView
5.Fix a bug when add a connection by use a ConnectionString 
6.Modify Repair Database Enable condition.

========================================================================
Ver 1.02 2012/01/04

1.Display "English" at Language Picker form instead of Space when default Language is used.
2.Show Connection Host and Port at Connection ListBox.
3.Array Operation is supported.
4.BsonDocument Element is supported.
5.Correct Paste ShortKey form Ctrl + P to Ctrl + V.
6.Show Message When exception happend at Element operation.

========================================================================
Ver 1.01 2011/12/27

1.Add Chinese and Japanese Language File
2.Make Status Form Sizable

========================================================================
Ver 1.00 2011/12/22 

This is the first release of MongoCola.
========================================================================
                
Tutorial:Basic

Startup
As it is the first time you run this application,a language picker form will popup:
If English is your mother tongue,you can Click "OK" directly
Chinese and Japanese is provide with MongoCola Version 1.01



After language picker,you need to tell application where is your mongo executable path.


In this Tutorial,the mongo executable path is C:\runmongo\bin

If the mainform shown as below,the application is started up successfully .



Add Connection
The first thing to operate the mongoDB is adding a MongoDB connection.
Please make sure that the mongo server has been startup before adding connection.
You can startup mongoDB by DOS console like this:

cd C:\runmongo\bin
mkdir C:\mongodb\magicdict
mongod --port 28030 --dbpath C:\mongodb\magicdict




More reference @mongodb.org:Quickstart Windows
[A Mongo connection is not only a single server,but also a replset,a route or config server in sharding system]

Open the Connection Manager form by menu:
Managerment -> Connection Manager:



This form will list up all connections that you has registered in the application.
The list is empty when the first time you use this application,.
Click "Add" to register a new connection.



The simplest connection only need to fill 3 fields
  • Connection(you can name the connection as you like)
  • Host(the ip or host of server,you can fill ‘localhost’ when the server on you local machine)
  • Port(the port of server, --port arg)


Pick the connection you registered right now, then click "OK".Now you can operate the mongo server.
All Status need to be refreshed manually in Mainform.(In status form,the some status will refresh automaticlly)

You can collapse or expansion the treeview by MenuItem:
  • Management -> collapse
  • Management -> expansion



Try WebForm
Click "MongoCola Web Form",then you can try the use MongoCola at your browser.

Click a connection , jump to the connection detail page.
At connection detail page,you can click connection node and database node to see the status,or click the collection node to see records in the collection.



Master-Slave
This application support to manage a Master-Slave server.
Start a master server.
Master can be startup by Dos console like:
cd C:\runmongo\bin
mkdir C:\mongodb\master
mongod --port 28018 --dbpath C:\mongodb\master --master


Start a slave server.
Slave can be startup by Dos console like:
cd C:\runmongo\bin
mkdir C:\mongodb\slave
mongod --port 28019 --dbpath C:\mongodb\slave --slave --source localhost:28018


You must select the SlaveOK checkbox if the server is a slave server.



Replset
This application support to manage a Replset server.
If you have a replset consist of 2 server: cd C:\runmongo\bin
mkdir C:\mongodb\shard1
mongod --port 10001 --dbpath C:\mongodb\shard1 --replSet set1 --rest

cd C:\runmongo\bin
mkdir C:\mongodb\shard2
mongod --port 10002 --dbpath C:\mongodb\shard2 --replSet set1 --rest


Connection name is need at basic tab.(Skip Host and port)



Add Host list at replset tab.



if every thing is ok,the main gui will look like this.(Replset init is needed).



Disconnect
You can disconnect the connection by:
  • Menu: Opertion -> Server -> Disconnect
  • Contextmenu: Right click the connection treenode to show contextmenu,click the "disconnect" menuitem
Tutorial:GUI

Object View
At the left side,there is a treeview to show you the connection(server) structure.The root node Server is the connection(server).
In most of case, the connection is server Instance. When you click the server treenode,the database database in the server will list as childnode.
Click the database treenode,the collectionscollection will be listed.Every collection has two childnodes,one is the index infomation,index another is data.Data
You can check the index information by clicking the index information index node; If you click the data nodeData,the data will be shown in right side panel with three View(TextView,ListView,TreeView).
If there is some exceptions happen when list the object,Error icon will be shown as the icon of node.

Data navigation
Your can navigate data by:
  • Shortcut Key:Previous(F3),Next(F4),First(F9),Last(F10)
  • Menu:DataNavi- > Previous,Next,First,Next
  • ToolBar:
You can set the records at perpage at option form:
  • Menu->Tools->Options
  • Toolbar->Options Button
Tutorial:Server[Connection]

Server properties
This function will show the propery of selected server.
  • Menu: Opertion -> Server -> Server properties
  • Contextmenu: Right click the Server treenode to show contextmenu,click the Server properties menuitem


Some properties will not be shown at some type of connection.

Status
This function can help you monitor the status of server.You can sort the data by click the columnheader.
  • You can display or not display the Status View by click Mainmeun:View -> Status
  • Menu: Select the server node right click menu -> Status


  • Menu: Select the Database node right click menu -> Status


  • Menu: Select the Collection node right click menu -> Status


Shut Down
This function will shut down the server.
  • Menu: Management -> Shut Down
  • Contextmenu: Right click the Server treenode to show contextmenu,click the Shut Down menuitem
This function will completely shut down the server!


Profilling Lever
You can set profilling Level for database
  • Menu: Operation -> Data -> Profilling Lever
  • Contextmenu: Right click the Database treenode to show contextmenu,click the Profilling Lever menuitem


This function will create system.profile collection automaticlly!


New Database
Create a new database.
  • Menu: Operation -> Server -> new database
  • Contextmenu: Right click the Server treenode to show contextmenu,click the "new database" menuitem


New Collection
Create a new Collection.You can create collection with advanced options.
  • Menu: Operation -> Database -> new Collection
  • Contextmenu: Right click the Database treenode to show contextmenu,click the "new Collection" menuitem


Pay attention to the Usage and Restrictions of Capped Collection
Tutorial:User

Add User
There are two types of User:Admin User AND Database User.
You can add an admin user only When you connect to the server with an admin user.
  • Menu: Operation -> Server -> Add User to admin Group(the menu will not enable until you select the server treenode)
  • Contextmenu: Right click the Server treenode to show contextmenu,click the "Add User to admin Group" menuitem


you can add user to database When you connect to the server as an admin user,or a database user.
  • Menu: Operation -> Database -> Add User(the menu will not enable until you select the database treenode)
  • Contextmenu: Right click the Server treenode to show contextmenu,click the "Add User" menuitem
Delete User
You can delete user from Admin Group or from database by deleting the record of user info from the system collection [system.users].
If you login as an admin user,you will find [admin] database,which contains the basic information about the whole server.
In [admin] database,you will find a collection with the name [system.users](if you have added some users before),click the node [Data] of the [system.users],the userInfo is listed in the right panel.
You can select the user which you want to delete form the panel(treeview can only select one user once,listview can select all user at sametime.TextView not support this operation), then you can delete user by:
  • Menu: Operation -> Server -> Delete User(the menu will not enable until you select some user)
  • Contextmenu: Right click the user treenode or listview to show contextmenu,click the "Delete User" menuitem


You also can switch to other database and delete user form database with the same way.

Tutorial:Aggregation

Map Reduce
Map Reduce is a cool function,this tool is support the map reduce via GUI
To open the map-reduce form,please select a data treenode,then click right.



In the map-reduce,you will see a sample for map javascript and reduce javascript.It is only for beginer.



You can load a javascript form system.js collection by select the jsname at listbox.Or you can save your javascript to system.js collection.
When the javascript is ready,click run to do map-reduce.



If the socketTimeout is too short to complete the map-reduce,there will be a exception happens.Please modify the socketTimeout at connection manager form

Others
Count:
This tools also support the Aggregation:Count,Distinct,Group,(All Aggregation is support query filter.The next section will introduce query filter)
Count will give you a count result of collection.The count result may be different ,when a datafilter is enable or not.
Distinct:
You need to pick a distinct field first



Click "Run",the result is display by a messagebox:



Group:
Please see the reference first: Refrence of Aggregation at mongodb.org
The Gui of group is look like this:



If everything is right,the result looks like this:(Don't forget to add init fields...if some fields is not need any more,leave fieldname with space)



Tutorial:Advance

Grid File System
You can easy upload or download a file form GFS with this tool.
Init GFS:
If there is not a GFS in your database,you can init a GFS for your database:
Select the database,then right click it,run the "Init GFS" Command at the contextMenu.
After you refresh the server(connection) list,fs.chunks and fs.files will add to database.Now you can use GFS.

Upload File:
Now Select the fs.files collection node,right click,contextMenu contains "Upload File" command.Try to upload a file to GFS.
The file witch is upload right now will show at the right side panel.



You can double click the file at the listview to open it,or use right-click contextMenu to operate the files.




Data Query
With DataQuery,you can decide the output fields with conditions.
To enable the DataQuery,please select the data node from the left panel,then
  • Click the MainMenu : Data -> Query
  • Click the ContextMenu : Query
You can Select the output fields with sort in "Output fields" tab.



You can give some conditions to limit the output data in "Filter" tab.

Example1: Select * from Collection Where Age > 10






Example2: Select * from Collection Where Age > 10 Or Age2 < 10






Example3: Select * from Collection Where (Age > 10 and Age2 < 10) or Age > 10





You can save your query filter into a .xml file or load your query filter from a .xml file at any functions witch support query filter.
(All Aggregation is support query filter.)
You also can click the icon on toolbar to switch filter status quickly.




Dump and Restore
This tool provide dump(backup) and restore function via run mongodump.exe and mongorestore.exe.
It is need the mongodump.exe and mongorestore.exe support,so make sure that the mongo\bin path is current setted.



You can dump database,collection to a file,and restore the database,collection when needed.
You also can export or import collection data.The difference of export and dump is that : Export write data to file with Bson,but Dump write data with Binary.

Import from Access
You can Import data from Microsoft Access Database.
Select a server then click the icon from the toolbar.
Now,the mongo[2.0.2] has not supported the No-English DBName or CollectionName yet.

Document Operation
You can add a new empty document to current collection.Select a data Node at the left pannel.
  • Menu: Operation - > Document -> Add Document
  • Right Context Menu:Add Document
A empty document will append to current collection.



As you have add a empty document to collection.Now try to add some element to this empty document.
1.Add a BsonElement to collection:Select document node,then
  • Menu:Operation -> Document -> Add Element
  • RightClick Context - > Add Element


Now BsonString,BsonInt32,BsonDateTime,BSonBoolean,BSonDocument,BSonArray is supported.



You also can add Element to a document,or add a value to a Array with "Add Element" menuitem. (But now a Array or a Document add to a Array is not support yet)
With this tool,you can generate your owner layout quickly.



You can also copy,cut,paste Element of a document or value of a array to generate your owner layout quickly.