🗄️ Database
MongoDB NoSQL Database
Last updated: 2025-09-25 02:29:54
MongoDB Document Database
MongoDB is a popular NoSQL database that stores data in flexible, JSON-like documents.
Basic MongoDB Operations
// Connect to MongoDB
const { MongoClient } = require('mongodb');
async function connectToMongoDB() {
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
return client.db('myapp');
}
// Insert documents
async function insertUser(db, userData) {
const result = await db.collection('users').insertOne({
name: userData.name,
email: userData.email,
createdAt: new Date()
});
return result.insertedId;
}
// Insert multiple documents
async function insertMultipleUsers(db, users) {
const result = await db.collection('users').insertMany(users);
return result.insertedIds;
}
Querying Data
// Find documents
async function findUsers(db, query = {}) {
return await db.collection('users').find(query).toArray();
}
// Find one document
async function findUserById(db, userId) {
return await db.collection('users').findOne({ _id: userId });
}
// Complex queries
async function findActiveUsers(db) {
return await db.collection('users').find({
isActive: true,
age: { $gte: 18 },
$or: [
{ role: 'admin' },
{ role: 'moderator' }
]
}).sort({ createdAt: -1 }).limit(10).toArray();
}
// Aggregation pipeline
async function getUserStats(db) {
return await db.collection('users').aggregate([
{
$match: { isActive: true }
},
{
$group: {
_id: '$role',
count: { $sum: 1 },
averageAge: { $avg: '$age' }
}
},
{
$sort: { count: -1 }
}
]).toArray();
}
Updating and Deleting
// Update one document
async function updateUser(db, userId, updateData) {
const result = await db.collection('users').updateOne(
{ _id: userId },
{
$set: updateData,
$currentDate: { lastModified: true }
}
);
return result.modifiedCount;
}
// Update many documents
async function deactivateOldUsers(db) {
const oneYearAgo = new Date();
oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);
const result = await db.collection('users').updateMany(
{ lastLogin: { $lt: oneYearAgo } },
{ $set: { isActive: false } }
);
return result.modifiedCount;
}
// Delete documents
async function deleteUser(db, userId) {
const result = await db.collection('users').deleteOne({ _id: userId });
return result.deletedCount;
}
// Delete many documents
async function deleteInactiveUsers(db) {
const result = await db.collection('users').deleteMany({ isActive: false });
return result.deletedCount;
}
Indexes and Performance
// Create indexes
async function createIndexes(db) {
// Single field index
await db.collection('users').createIndex({ email: 1 });
// Compound index
await db.collection('users').createIndex({ role: 1, isActive: 1 });
// Text index for search
await db.collection('users').createIndex({
name: 'text',
email: 'text'
});
// TTL index (auto-delete after time)
await db.collection('sessions').createIndex(
{ createdAt: 1 },
{ expireAfterSeconds: 3600 } // 1 hour
);
}
// Text search
async function searchUsers(db, searchTerm) {
return await db.collection('users').find({
$text: { $search: searchTerm }
}).toArray();
}