Connecting MongoDB Compass and Express Server
Setup 🍃🔌
Every real-world app needs a database to store data permanently. MongoDB is one of the
most popular databases for Node.js apps because it stores data as flexible JSON-like documents.
In this tutorial, we'll set up an Express server from scratch and connect it to
MongoDB Compass — the official GUI for MongoDB — using Mongoose.
In this tutorial, we will learn:
What MongoDB Compass is and why we use it
Setting up a basic Express server
Installing and configuring Mongoose
Storing the connection string safely with dotenv
Writing a connectDB function to connect to MongoDB
Verifying the connection using MongoDB Compass
---
What is MongoDB Compass?
MongoDB Compass is a free desktop GUI application that lets you visually explore,
query, and manage your MongoDB databases without writing raw shell commands. Once our
Express server connects to a MongoDB database, we can open Compass, point it at the same
connection string, and see our collections and documents update in real time.
---
Step 1: Initialize the Project and Install Dependencies
Open your terminal, create a new project folder, and install express,
mongoose, and dotenv.
mkdir news-backend
cd news-backend
npm init -y
npm install express mongoose dotenv
npm install --save-dev nodemon
---
Step 2: Install & Open MongoDB Compass
Download MongoDB Compass from the official MongoDB website and install it. On first
launch, Compass asks for a connection string — for a local database this is usually:
mongodb://127.0.0.1:27017
If you're using MongoDB Atlas (cloud-hosted), copy the connection string from your
Atlas cluster's Connect button instead — it will look something like
mongodb+srv://username:password@cluster.mongodb.net.
---
Step 3: Store the Connection String in a .env File
Never hardcode your database credentials in your source code. Create a .env
file in your project root and add your connection string there.
PORT=5000
MONGO_URI=mongodb://127.0.0.1:27017/newsAppDB
Also create a .gitignore file and add .env and node_modules
to it, so your credentials never get pushed to GitHub.
---
Step 4: Create the Database Connection File
Create a config/db.js file that exports a connectDB function using
Mongoose to connect to MongoDB.
const mongoose = require("mongoose");
const connectDB = async () => {
try {
await mongoose.connect(process.env.MONGO_URI);
console.log("✅ MongoDB Connected Successfully");
} catch (error) {
console.error("❌ MongoDB Connection Failed:", error.message);
process.exit(1);
}
};
module.exports = connectDB;
---
Step 5: Set Up the Express Server
Now create the main server.js file. This sets up Express, loads our environment
variables, connects to MongoDB, and starts listening for requests.
require("dotenv").config();
const express = require("express");
const connectDB = require("./config/db");
const app = express();
const PORT = process.env.PORT || 5000;
// Connect to MongoDB
connectDB();
// Middleware to parse JSON request bodies
app.use(express.json());
// Test route
app.get("/", (req, res) => {
res.send("News App backend is running 🚀");
});
app.listen(PORT, () => {
console.log(`Server started on http://localhost:${PORT}`);
});
---
Step 6: Add a Start Script and Run the Server
Update package.json to use nodemon for automatic restarts during development.
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js"
}
If everything is set up correctly, your terminal should show
✅ MongoDB Connected Successfully followed by
Server started on http://localhost:5000.
---
Step 7: Verify the Connection in MongoDB Compass
Open MongoDB Compass, paste the same connection string from your .env file
(without the database name if you want to browse all databases), and click Connect.
Once your Express server has run at least once, you should see a new database called
newsAppDB appear in the sidebar as soon as the first document is written to it.
---
Understanding the Connection String
| Part |
Example |
Meaning |
| Protocol |
mongodb:// or mongodb+srv:// |
Local connection vs. Atlas (cloud) connection |
| Host & Port |
127.0.0.1:27017 |
Where the MongoDB server is running |
| Database Name |
/newsAppDB |
The specific database Mongoose should use |
| Credentials |
username:password@ |
Required for Atlas or authenticated local instances |
---
Features and Learnings:-
Understood what MongoDB Compass is and why it's useful for visualizing data.
Set up a fresh Node.js project with Express, Mongoose, and dotenv.
Learned to keep database credentials secure using a .env file.
Wrote a reusable connectDB function to connect Mongoose to MongoDB.
Configured server.js to start Express and connect to the database together.
Verified the live connection visually using MongoDB Compass.
Prepared the backend for the next step: creating Mongoose models and building REST API routes.