adminMongo
Last updated
Last updated
adminMongo is a cross platform user interface (GUI) to handle all your MongoDB connections/databases needs. adminMongo is fully responsive and should work on a range of devices.
adminMongo connection information (including username/password) is stored unencrypted in a config file, it is not recommended to run this application on a production or public facing server without proper security considerations.
If my work helps you, please consider
Navigate to folder & install adminMongo: git clone https://github.com/mrvautin/adminMongo.git && cd adminMongo
Install dependencies: npm install
Start application: npm start
or node app
Visit http://127.0.0.1:1234 in your browser
Note: Node.js version 4.x or above is required
adminMongo can also be used as a cross platform Electron application. Due to the size of Electron it will need to be built manually.
To build for Mac:
$ npm run-script packageOsx
To build for Windows:
$ npm run-script packageWin32
To build for Linux:
$ npm run-script packageLinux
Once built, the executable will be in the /releases
folder.
Prebuilt binaries can be downloaded here:
The Electron builds have been tested on Mac and Windows 10. Linux has not been tested. Please report any issues.
A read only demo can be seen here
Manage from a connection level for easy access to multiple databases
Create/Delete databases
Backup/Restore databases
Create/Delete/Edit collection
Create/Delete/Edit documents
Create/Delete indexes
Query documents
Collection statistics
Export collections in JSON format
Server monitoring
Documents need to have an "_id" value which is a string, integer, or MongoDB ObjectId. Documents using Composite ID indexing is currently not supported.
Connection strings with multiple hosts for replica sets are currently not supported.
adminMongo will listen on host: localhost
and port: 1234
by default. This can be overwritten by adding a config file in /config/app.json
. For example:
Note: Any changes to the config file requires a restart of the application
All above parameters are usable through the environment which makes it very handy to when using adminMongo as a docker container! just run docker run -e HOST=yourchoice -e PORT=1234 ...
The config file (optional) options are:
Option
Env-variable
Definition
host
HOST
The IP address adminMongo
will listen on
port
PORT
The Port adminMongo
will listen on
password
PASSWORD
An application level password to add simply authentication
locale
LOCALE
The locale is automatically set to the detected locale of Nodejs. If there is not a translation, adminMongo
will default to English. This setting overrides the default/detected value
context
CONTEXT
Setting a context
of "dbApp" is like changing the base URL of the app and will mean the app will listen on http://10.0.0.1:4321/dbApp
. Ommiting a context will mean the application will listen on root. Eg: http://10.0.0.1:4321
. This setting can be useful when running adminMongo
behind Nginx etc.
monitoring
MONITORING
Whether to run monitoring at regular intervals. Defaults to true or on
Setting a context
of "dbApp" is like changing the base URL of the app and will mean the app will listen on http://10.0.0.1:4321/dbApp
. Ommiting a context will mean the application will listen on root. Eg: http://10.0.0.1:4321
. This setting can be useful when running adminMongo
behind Nginx etc.
An example Nginx server block. Note the location /dbApp {
and proxy_pass http://10.0.0.1:4321/dbApp;
lines match the context
set in the /config/app.json
file.
Looking for people to translate into other languages. If you can help, grab the
/locale/en.js
file, translate to your language and submit a pull request.
The locale is automatically set to the detected locale of Nodejs. If there is not a translation, adminMongo
will default to English. To override the detected locale a setting can be added to the app.json
file. See Configuration section for a "German" example.
By default adminMongo
is not password protected. You can add password authentication by adding a password
value to the /config/app.json
file (See the Configuration section). Once added you will need to restart adminMongo
and all routes will be protected until the correct password is added. You will then be authenticated for the life of the session (60 mins by default) or if the "Logout" link is clicked.
After visiting http://127.0.0.1:1234 you will be presented with a connection screen. You need to give your connection a unique name as a reference when using adminMongo and a MongoDB formatted connection string. The format of a MongoDB connection string can form: mongodb://<user>:<password>@127.0.0.1:<port>/<db>
where specifying to the <db>
level is optional. For more information on MongoDB connection strings, see the official MongoDB documentation.
You can supply a connection options object (see docs) with each connection.
For example:
Note: The connection can be either local or remote hosted on VPS or MongoDB service such as mLab.
The connection can also be automatically initiated through the environment (or with the docker -e parameters)
Env-variable
Description
CONN_NAME
The name of the connection to create on boot
DB_USERNAME
The username for the database connection
DB_PASSWORD
The password for the database user
DB_HOST
The host IP address or DNS name without the port!
DB_PORT
The port of the mongoDB database, if not provided the default 27017 will be used
DB_NAME
The name of the database
After opening your newly created connection, you are able to see all database objects associated with your connection. Here you can create/delete collections, create/delete users and see various stats for your database.
After selecting your collection from the "Database Objects" menu, you will be presented with the collections screen. Here you can see documents in pagination form, create new documents, search documents, delete, edit documents and view/add indexes to your collection.
You can perform searches of documents using the Search documents
button on the collections screen. You will need to enter the key (field name) and value. Eg: key = "_id" and value = "569ff81e0077663d78a114ce" (Only works on string "_id" fields - Use "Query Documents" for ObjectID's).
You can clear your search by clicking the
Reset
button on the collections screen.
Complex querying of documents is done through the "Query documents" button. This allows a query Object to be passed to MongoDB to return results. Queries can be written in full BSON format or EJSON format. For example these queries should return the same results:
is equivalent to:
Adding and editing documents is done using a JSON syntax highlighting control.
Documents with Media embedded show previews
Functionality currently in Beta
Selected server monitoring is done at regular intervals and stored in local database store for 24hrs.
New connections require an app restart for monitoring to commence
Indexes can be added from the collection screen. Please see the official MongoDB documentation on adding indexes.
The adminMongo
API tests include:
Add and remove a connection
Add and remove a database
Add, remove and rename a collection
Create and delete a user
Add, query and delete a document
To run tests, simply run:
Note: You will need to ensure there is no password protection setup in the /config/app.json
.
You may need to edit the variables and connection string in /tests/tests.js
for your MongoDB instance.
If you see any missing tests, please submit a PR.
Fork it!
Create your feature branch: git checkout -b my-new-feature
Commit your changes: git commit -am 'Add some feature'
Push to the branch: git push origin my-new-feature
Submit a pull request :D
Please make any suggestions.
The Connection setup screen
The connections/database screen
The collections screen
Simple search documents
Query documents
Editing a document
Documents with media
Server monitoring
Viewing/Adding indexes