Javascript 101
MongoDB
MongoDB is a NoSQL document database that stores data in flexible, JSON-like documents.
Basic Query Commands
Connecting to MongoDB Shell
mongosh # Connect to local MongoDBmongosh "mongodb://host:port/db" # Connect to remoteDatabase Operations
show dbs // List all databasesuse myDatabase // Switch to/create databasedb.dropDatabase() // Delete current databaseCollection Operations
show collections // List collectionsdb.createCollection("users") // Create collectiondb.users.drop() // Delete collectionInsert Documents
// Insert one documentdb.users.insertOne({ name: "John", age: 30, email: "john@example.com",});
// Insert multiple documentsdb.users.insertMany([ { name: "Alice", age: 25 }, { name: "Bob", age: 35 },]);Query Documents
// Find all documentsdb.users.find();
// Find with conditiondb.users.find({ age: 30 });
// Find one documentdb.users.findOne({ name: "John" });
// Comparison operatorsdb.users.find({ age: { $gt: 25 } }); // Greater thandb.users.find({ age: { $gte: 25 } }); // Greater than or equaldb.users.find({ age: { $lt: 30 } }); // Less thandb.users.find({ age: { $lte: 30 } }); // Less than or equaldb.users.find({ age: { $ne: 30 } }); // Not equal
// Logical operatorsdb.users.find({ $and: [{ age: { $gt: 20 } }, { age: { $lt: 40 } }] });db.users.find({ $or: [{ name: "John" }, { name: "Alice" }] });
// Projection (select specific fields)db.users.find({}, { name: 1, email: 1, _id: 0 });
// Sortingdb.users.find().sort({ age: 1 }); // Ascendingdb.users.find().sort({ age: -1 }); // Descending
// Limit and skipdb.users.find().limit(5);db.users.find().skip(10).limit(5);Update Documents
// Update one documentdb.users.updateOne({ _id: ObjectId("507f1f77bcf86cd799439011") }, { $set: { age: 31 } });
// Update multiple documentsdb.users.updateMany({ age: { $lt: 30 } }, { $set: { status: "young" } });
// Replace entire documentdb.users.replaceOne( { _id: ObjectId("507f1f77bcf86cd799439011") }, { name: "John", age: 31, city: "New York" },);
// Update operatorsdb.users.updateOne({ name: "John" }, { $inc: { age: 1 } }); // Incrementdb.users.updateOne({ name: "John" }, { $unset: { email: "" } }); // Remove fielddb.users.updateOne({ name: "John" }, { $push: { tags: "new" } }); // Add to arrayDelete Documents
// Delete one documentdb.users.deleteOne({ _id: ObjectId("507f1f77bcf86cd799439011") });
// Delete multiple documentsdb.users.deleteMany({ age: { $lt: 20 } });
// Delete all documentsdb.users.deleteMany({});Indexing
// Create indexdb.users.createIndex({ email: 1 });
// Create unique indexdb.users.createIndex({ email: 1 }, { unique: true });
// List indexesdb.users.getIndexes();
// Drop indexdb.users.dropIndex("email_1");MongoDB with Node.js
Installation
npm install mongodbConnecting to MongoDB
const { MongoClient } = require("mongodb");
const uri = "mongodb://localhost:27017";const client = new MongoClient(uri);
async function connect() { try { await client.connect(); console.log("Connected to MongoDB"); const db = client.db("myDatabase"); return db; } catch (error) { console.error("Connection error:", error); }}CRUD Operations in Node.js
const { MongoClient } = require("mongodb");
const uri = "mongodb://localhost:27017";const client = new MongoClient(uri);
async function main() { try { await client.connect(); const db = client.db("myDatabase"); const users = db.collection("users");
// Insert const insertResult = await users.insertOne({ name: "John", age: 30, email: "john@example.com", }); console.log("Inserted:", insertResult.insertedId);
// Find const user = await users.findOne({ name: "John" }); console.log("Found:", user);
// Find all with cursor const cursor = users.find({ age: { $gte: 25 } }); const allUsers = await cursor.toArray(); console.log("All users:", allUsers);
// Update const updateResult = await users.updateOne( { name: "John" }, { $set: { age: 31 } }, ); console.log("Updated:", updateResult.modifiedCount);
// Delete const deleteResult = await users.deleteOne({ name: "John" }); console.log("Deleted:", deleteResult.deletedCount); } finally { await client.close(); }}
main().catch(console.error);Using with Express.js
const express = require("express");const { MongoClient, ObjectId } = require("mongodb");
const app = express();app.use(express.json());
const uri = "mongodb://localhost:27017";const client = new MongoClient(uri);
let db;
// Connect on startupclient.connect().then(() => { db = client.db("myDatabase"); console.log("Connected to MongoDB");});
// GET all usersapp.get("/users", async (req, res) => { const users = await db.collection("users").find().toArray(); res.json(users);});
// GET user by IDapp.get("/users/:id", async (req, res) => { const user = await db.collection("users").findOne({ _id: new ObjectId(req.params.id), }); if (!user) return res.status(404).json({ error: "User not found" }); res.json(user);});
// POST create userapp.post("/users", async (req, res) => { const result = await db.collection("users").insertOne(req.body); res.status(201).json({ id: result.insertedId });});
// PUT update userapp.put("/users/:id", async (req, res) => { const result = await db .collection("users") .updateOne({ _id: new ObjectId(req.params.id) }, { $set: req.body }); res.json({ modified: result.modifiedCount });});
// DELETE userapp.delete("/users/:id", async (req, res) => { const result = await db.collection("users").deleteOne({ _id: new ObjectId(req.params.id), }); res.json({ deleted: result.deletedCount });});
app.listen(3000, () => console.log("Server running on port 3000"));Using Mongoose (ODM)
Mongoose provides schema validation and a more structured approach.
npm install mongooseconst mongoose = require("mongoose");
// Connectmongoose.connect("mongodb://localhost:27017/myDatabase");
// Define schemaconst userSchema = new mongoose.Schema({ name: { type: String, required: true }, age: { type: Number, min: 0 }, email: { type: String, unique: true }, createdAt: { type: Date, default: Date.now },});
// Create modelconst User = mongoose.model("User", userSchema);
// CRUD operationsasync function main() { // Create const user = new User({ name: "John", age: 30, email: "john@example.com" }); await user.save();
// Read const users = await User.find({ age: { $gte: 25 } }); const john = await User.findOne({ name: "John" });
// Update await User.updateOne({ name: "John" }, { age: 31 }); // or john.age = 31; await john.save();
// Delete await User.deleteOne({ name: "John" });}
main().catch(console.error);