Node.js MongoDB

🌐 Node.js MongoDB – Complete Guide

MongoDB is a NoSQL, document-based database. Data is stored in JSON-like documents, making it flexible and scalable.


1. Install MongoDB

  1. Install MongoDB Server from MongoDB Download

  2. Start MongoDB:

# Linux/Mac
sudo service mongod start
# Windows
“C:\Program Files\MongoDB\Server\6.0\bin\mongod.exe”


2. Install Node.js MongoDB Driver

npm install mongodb

Or install Mongoose (ODM for easier schema management):

npm install mongoose

3. Connect to MongoDB

Using Native MongoDB Driver

const { MongoClient } = require("mongodb");

async function main() {
const uri = “mongodb://localhost:27017”;
const client = new MongoClient(uri);

try {
await client.connect();
console.log(“MongoDB connected!”);

const db = client.db(“testdb”);
const collection = db.collection(“users”);

} catch (err) {
console.error(err);
} finally {
await client.close();
}
}

main();


Using Mongoose

const mongoose = require("mongoose");

mongoose.connect(“mongodb://localhost:27017/testdb”, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log(“MongoDB connected via Mongoose!”))
.catch(err => console.error(err));


4. Create a Schema and Model (Mongoose)

const userSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
createdAt: { type: Date, default: Date.now }
});
const User = mongoose.model(“User”, userSchema);


5. CRUD Operations

Insert Document

// Using Mongoose
const newUser = new User({ name: "John Doe", email: "john@example.com" });
await newUser.save();
console.log("User saved!");

Find Documents

const users = await User.find(); // Fetch all users
const john = await User.findOne({ name: "John Doe" }); // Single user

Update Document

await User.updateOne(
{ name: "John Doe" },
{ $set: { email: "john.doe@example.com" } }
);

Delete Document

await User.deleteOne({ name: "John Doe" });

6. Using Native Driver CRUD

const { MongoClient } = require("mongodb");

async function main() {
const client = new MongoClient(“mongodb://localhost:27017”);
await client.connect();
const db = client.db(“testdb”);
const users = db.collection(“users”);

// Insert
await users.insertOne({ name: “Alice”, email: “alice@example.com” });

// Find
const allUsers = await users.find().toArray();
console.log(allUsers);

// Update
await users.updateOne({ name: “Alice” }, { $set: { email: “alice@newmail.com” } });

// Delete
await users.deleteOne({ name: “Alice” });

await client.close();
}

main();


7. Tips & Best Practices

  • Use Mongoose for schema validation and better structure.

  • Use async/await for clean code.

  • Use indexes on frequently searched fields (email, _id).

  • Validate input to prevent inconsistent documents.

  • Keep MongoDB connection alive in production (avoid reconnecting on every request).

You may also like...