Setting up Mongo Express 101: A Comprehensive Guide

|

Mongo Express - Featured Image

Efficiently managing exponentially growing data is a significant challenge for every growing business. This requires a scalable, flexible, and reliable Database Management solution like MongoDB.  It is an Open-source Document Oriented Database Management system that can scale easily as your business grows. 

To effortlessly manage MongoDB Databases, you can use Mongo Express. It is an effective Web-based Management Tool for administering MongoDB Databases interactively. Using simple Add, Delete or Modify buttons, you can perform the basic MongoDB operations. 

In this article, you will learn how to easily install & run Mongo Express for managing your MongoDB Databases.

Table of Contents

What is MongoDB?

Mongo Express - MongoDB Logo
Image Source

MongoDB is a NoSQL Open-source Document Oriented Database developed for storing and processing high volumes of data. Compared to the conventional relational databases, MongoDB makes use of collections and documents instead of tables consisting of rows and columns. The Collections consist of several documents and documents containing the basic units of data in terms of key and value pairs. 

Introduced in February 2009, the MongoDB database is designed, maintained, and managed by MongoDB.Inc under SSPL(Server Side Public License). Organizations such as Facebook, Nokia, eBay, Adobe, Google, etc. prefer it for efficiently handling and storing their exponentially growing data. It offers complete support for programming languages such as C, C++, C#, Go, Java, Node.js, Perl, PHP, Python, Motor, Ruby, Scala, Swift, and Mongoid.

Key Features of MongoDB?

Mongo Express - MongoDB Features
Image Source

With constant efforts from the online community, MongoDB has evolved over the years. Some of its eye-catching features are:

  • High Data Availability & Stability: MongoDB’s Replication feature provides multiple servers for disaster recovery and backup. Since several servers store the same data or shards of data, MongoDB provides greater data availability & stability. This ensures all-time data access and security in case of server crashes, service interruptions, or even good old hardware failure. 
  • Accelerated Analytics: You may need to consider thousands to millions of variables while running Ad-hoc queries. MongoDB indexes BSON documents and utilizes the MongoDB Query Language (MQL) that allows you to update Ad-hoc queries in real-time. MongoDB provides complete support for field queries, range queries, and regular expression searches along with user-defined functions.
  • Indexing: With a wide range of indices and features with language-specific sort orders that support complex access patterns to datasets, MongoDB provides optimal performance for every query. For the real-time ever-evolving query patterns and application requirements, MongoDB also provisions On-demand Indices Creation.
  • Horizontal Scalability: With the help of Sharding, MongoDB provides horizontal scalability by distributing data on multiple servers using the Shard Key. Each shard in every MongoDB Cluster stores parts of the data, thereby acting as a separate database. This collection of comprehensive databases allows efficient handling of growing volumes of data with zero downtime. The complete Sharding Ecosystem is maintained and managed by Mongos that directs queries to the correct shard based on the Shard Key.
  • Load Balancing: Real-time Replication and Sharding contribute towards large-scale Load Balancing. Ensuring top-notch Concurrency Controls and Locking Protocols, MongoDB can effectively handle multiple concurrent read and write requests for the same data.  
  • Aggregation: Similar to the SQL Group By clause, MongoDB can easily batch process data and present a single result even after executing several other operations on the group data. MongoDB’s Aggregation framework consists of 3 types of aggregations i.e. Aggregation Pipeline, Map-Reduce Function, and Single-Purpose Aggregation methods.

What is Mongo Express?

Mongo Express - Mongo Express Interface
Image source

Mongo Express is an interactive lightweight Web-Based Administrative Tool to effectively manage MongoDB Databases. Written with Node.js, Express, and Bootstrap3, Mongo Express can be used to simplify several MongoDB Admin tasks. Using Mongo Express, you can add, delete or modify databases, collections, and documents. With GridFS support, Mongo Express allows you to easily handle and process incredibly large files. It also offers complete support for BSON Data Types in documents, Custom CA and CA validation disabling & Replica Sets. Since it is also based on Bootstrap 3, Mongo Express is Mobile responsive. 

For a fast collection view, Mongo Express provides Async On-demand Loading of big document properties (>100KB default). You can also have a bird’s eye view of your data as nested and large objects are collapsible. Mongo Express also provides an inline preview of your audio/video/image assets in the collection view. 

Mongo Express BSON Data Types

MongoDB Express supports the following BSON Data Types:

  • Javascript Types: This includes Strings, numbers, lists, booleans, null, etc where the numbers in Javascript are 64-bit floating points.
  • ObjectID/ObjectID(id): ObjectID creates a new Object ID type where as the ObjectID(id) statement uses the Object ID with the given 24-digit hexadecimal string.
  • ISODate: This is used to create an ISODate object with the current time. You can also provide a timestamp argument to create an ISODate object with a specified time. 
  • DBRef/Dbref: For this, you can use DBRef(collection, objectID) statement for linking documents easily.
  • Timestamp: You can use Timestamp(time, ordinal) to create a new Timestamp object with the specified time.
  • Code: This can be a native Javascript function or maybe even a string.

Apart from these Mongo Express document editor/viewer also supports MinKey, MaxKey & Symbol.

Simplify MongoDB ETL with Hevo’s No-code Data Pipeline

Hevo Data, a No-code Data Pipeline helps to load data from any data source such as Databases, SaaS applications, Cloud Storage, SDK,s, and Streaming Services and simplifies the ETL process. It supports MongoDB & MongoDB Atlas, along with 100+ data sources (Including 40+ Free Data Sources), and is a 3-step process by just selecting the data source, providing valid credentials, and choosing the destination. Hevo not only loads the data onto the desired Data Warehouse but also enriches the data and transforms it into an analysis-ready form without having to write a single line of code.

Its completely automated pipeline offers data to be delivered in real-time without any loss from source to destination. Its fault-tolerant and scalable architecture ensure that the data is handled in a secure, consistent manner with zero data loss and supports different forms of data. The solutions provided are consistent and work with different BI tools as well.

Get Started with Hevo for Free

Check out why Hevo is the Best:

  • Secure: Hevo has a fault-tolerant architecture that ensures that the data is handled in a secure, consistent manner with zero data loss.
  • Schema Management: Hevo takes away the tedious task of schema management & automatically detects the schema of incoming data and maps it to the destination schema.
  • Minimal Learning: Hevo, with its simple and interactive UI, is extremely simple for new customers to work on and perform operations.
  • Connectors: Hevo supports 100+ Integrations to SaaS platforms such as WordPress, FTP/SFTP, Files, Databases, BI tools, and Native REST API & Webhooks Connectors. It supports various destinations including Google BigQuery, Amazon Redshift, Snowflake, Firebolt, Data Warehouses; Amazon S3 Data Lakes; Databricks, MySQL, SQL Server, TokuDB, MongoDB, DynamoDB, PostgreSQL Databases to name a few.  
  • Hevo Is Built To Scale: As the number of sources and the volume of your data grows, Hevo scales horizontally, handling millions of records per minute with very little latency.
  • Incremental Data Load: Hevo allows the transfer of data that has been modified in real-time. This ensures efficient utilization of bandwidth on both ends.
  • Live Support: The Hevo team is available round the clock to extend exceptional support to its customers through chat, email, and support calls.
  • Live Monitoring: Hevo allows you to monitor the data flow and check where your data is at a particular point in time.  
Sign up here for a 14-Day Free Trial!

Prerequisites

  • MongoDB should be up & running.
  • Node.js v4 or higher should be installed.

How to set up Mongo Express?

Before setting up Mongo Express, it is to be noted that Mongo Express comes with a config-default.js file that primarily supports basic authentication. It only includes the base64 encoded payload of a username:password combination. Hence, you may observe several warnings on the console. For better data security, it is recommended to restrict access with strong credentials and deploy perimeter access controls. You can also run Mongo Express privately for development purposes by copying config.default.js to config.js and editing the default property to fit your local environment. 

To run the development build, execute the following command:

npm run start-dev

To set up Mongo Express on your system, follow these simple steps:

Step 1: Installing Mongo Express

  • Step 1: To install Mongo Express on your system execute the following command:
npm install -g mongo-express
  • Step 2: For installing a Non-global copy, run the following command:
npm install mongo-express

Step 2: Configuring Mongo Express

  • Step 1: After executing the npm install command, you can now copy YOUR_PATH/node_modules/mongo-express/config.default.js into a new file called YOUR_PATH/node_modules/mongo-express/config.js. The keyword “YOUR_PATH” identifies the current OS user and system configuration.
  • Step 2: Now, provide all your MongoDB connection details and any other options you want to modify in config.js.

Step 3: Running Mongo Express

  • Step 1: Execute the following command to run Mongo Express: 
cd YOUR_PATH/node_modules/mongo-express/ && node app.js

 You can also run Mongo Express directly if you have it globally:

mongo-express --url mongodb://127.0.0.1:27017
  • Step 2:  For running Mongo Express as an administrator, use the command given below:
mongo-express --admin --url mongodb://127.0.0.1:27017

For any assistance on the Mongo Express configuration options, use the following command:

mongo-express --help

Mongo Express with Docker

To use MongoDB with Docker, ensure that a MongoDB container is running on a Docker network (–network some-network below) with –name or –network-alias set to mongo. You can also set the connection string ME_CONFIG_MONGODB_URL to the right connection for your MongoDB container on your Docker network. You run the Docker image via the following 2 methods:

$ docker run -it --rm -p 8081:8081 --network some-network mongo-express
  • Method 2: You can also build an image from the project directory & then run the image. To do that, execute the following commands:
$ docker build -t mongo-express
$ docker run -it --rm -p 8081:8081 --network some-network mongo-express

You can also change the container’s configuration by using the following environment variables:

Name                              | Default         | Description
----------------------------------|-----------------|------------
`ME_CONFIG_MONGODB_URL`           | `mongodb://admin:pass@localhost:27017/db?ssl=false`
`ME_CONFIG_MONGODB_ENABLE_ADMIN`  | `false`         | Enable administrator access. Send strings: `"true"` or `"false"`.
`ME_CONFIG_MONGODB_AUTH_DATABASE` | `db`            | Database name (only needed if `ENABLE_ADMIN` is `"false"`).
`ME_CONFIG_MONGODB_AUTH_USERNAME` | `admin`         | Database username (only needed if `ENABLE_ADMIN` is `"false"`).
`ME_CONFIG_MONGODB_AUTH_PASSWORD` | `pass`          | Database password (only needed if `ENABLE_ADMIN` is `"false"`).
`ME_CONFIG_SITE_BASEURL`          | `/`             | Set the express baseUrl to ease mounting at a subdirectory. Remember to include a leading and trailing slash.
`ME_CONFIG_SITE_COOKIESECRET`     | `cookiesecret`  | String used by [cookie-parser middleware](https://www.npmjs.com/package/cookie-parser) to sign cookies.
`ME_CONFIG_SITE_SESSIONSECRET`    | `sessionsecret` | String used to sign the session ID cookie by [express-session middleware](https://www.npmjs.com/package/express-session).
`ME_CONFIG_BASICAUTH_USERNAME`    | ``              | mongo-express web login name. Sending an empty string will disable basic authentication.
`ME_CONFIG_BASICAUTH_PASSWORD`    | ``              | mongo-express web login password.
`ME_CONFIG_REQUEST_SIZE`          | `100kb`         | Used to configure maximum mongo update payload size. CRUD operations above this size will fail due to restrictions in [body-parser](https://www.npmjs.com/package/body-parser).
`ME_CONFIG_OPTIONS_EDITORTHEME`   | `rubyblue`      | Web editor color theme, [more here](http://codemirror.net/demo/theme.html).
`ME_CONFIG_OPTIONS_READONLY`      | `false`         | if readOnly is true, components of writing are not visible.
`ME_CONFIG_OPTIONS_NO_DELETE`      | `false`         | if noDelete is true, components of deleting are not visible.
`ME_CONFIG_SITE_SSL_ENABLED`      | `false`         | Enable SSL.
`ME_CONFIG_MONGODB_SSLVALIDATE`   | `true`          | Validate mongod server certificate against CA
`ME_CONFIG_SITE_SSL_CRT_PATH`     | ` `             | SSL certificate file.
`ME_CONFIG_SITE_SSL_KEY_PATH`     | ` `             | SSL key file.
`ME_CONFIG_SITE_GRIDFS_ENABLED`   | `false`         | Enable gridFS to manage uploaded files.
`VCAP_APP_HOST`                   | `localhost`     | address that mongo-express will listen on for incoming connections.
`VCAP_APP_PORT`                   | `8081`          | port that mongo-express will run on.
`ME_CONFIG_MONGODB_CA_FILE`       | ``              | CA certificate File
`ME_CONFIG_BASICAUTH_USERNAME_FILE`     | ``        | File version of ME_CONFIG_BASICAUTH_USERNAME
`ME_CONFIG_BASICAUTH_PASSWORD_FILE`     | ``        | File version of ME_CONFIG_BASICAUTH_PASSWORD
`ME_CONFIG_MONGODB_ADMINUSERNAME_FILE`  | ``        | File version of ME_CONFIG_MONGODB_ADMINUSERNAME
`ME_CONFIG_MONGODB_ADMINPASSWORD_FILE`  | ``        | File version of ME_CONFIG_MONGODB_ADMINPASSWORD
`ME_CONFIG_MONGODB_AUTH_USERNAME_FILE`  | ``        | File version of ME_CONFIG_MONGODB_AUTH_USERNAME
`ME_CONFIG_MONGODB_AUTH_PASSWORD_FILE`  | ``        | File version of ME_CONFIG_MONGODB_AUTH_PASSWORD

The below example connects to a container name typical of docker-compose, modifies the editor’s color theme, and deactivates the basic authentication.

docker run -it --rm 
    --name mongo-express 
    --network web_default 
    -p 8081:8081 
    -e ME_CONFIG_OPTIONS_EDITORTHEME="ambiance" 
    -e ME_CONFIG_BASICAUTH_USERNAME="" 
    -e ME_CONFIG_MONGODB_URL="mongodb://mongo:27017" 
    mongo-express

For both of the above methods, the default port exposed from the container is 8081. You can also specify a port of your choice in the configuration settings. To start working with Mongo Express you can now visit http://localhost:8081 or http://host-ip:8081 in your browser.

Mongo Express - Mongo Express First Page
Image Source

Conclusion

In this article, you have learned how to install & run Mongo Express on your browser. You can now start using it to manage your MongoDB Databases. Mongo Express provides an interactive interface that allows you to add, delete or modify databases, collections, and documents. Mongo Express supports several BSON Data Types except for the Binary BSON Data Type which has not been tested yet. You can connect and authenticate to individual databases and simplify your mundane MongoDB Admin tasks.

To get a complete picture of your business performance and financial health, you need to consolidate data from MongoDB and all the other applications used across your business. To achieve this you need to assign a portion of your Engineering Bandwidth to Integrate data from all sources, Clean & Transform it, and finally, Load it to a Cloud Data Warehouse or a destination of your choice for further Business Analytics. All of these challenges can be comfortably solved by a Cloud-Based ETL tool such as Hevo Data.  

Visit our Website to Explore Hevo

Hevo Data, a No-code Data Pipeline can seamlessly transfer data from a vast sea of 100+ sources such as MongoDB & MongoDB Atlas to a Data Warehouse or a Destination of your choice to be visualized in a BI Tool. It is a reliable, completely automated, and secure service that doesn’t require you to write any code! 

If you are using MongoDB as your NoSQL Database Management System and searching for a no-fuss alternative to Manual Data Integration, then Hevo can effortlessly automate this for you. Hevo, with its strong integration with 100+ sources & BI tools(Including 40+ Free Sources), allows you to not only export & load data but also transform & enrich your data & make it analysis-ready in a jiffy.

Want to take Hevo for a ride? Sign Up for a 14-day free trial and simplify your Data Integration process. Do check out the pricing details to understand which plan fulfills all your business needs.

Tell us about your experience of setting up Mongo Express! Share your thoughts with us in the comments section below.

Sanchit Agarwal
Former Research Analyst, Hevo Data

Sanchit Agarwal is a data analyst at heart with a passion for data, software architecture, AI and writing technical content. He has experience writing more than 200 articles on data integration and infrastructure. His passion in helping data practitioners to solve their day to day challenges drives him to provide more value through content creation.

No-code Data Pipeline for MongoDB