mongodb-connection-lib
Version:
A comprehensive MongoDB connection library with CRUD operations, connection pooling, and model abstraction
74 lines (61 loc) • 2.03 kB
JavaScript
const DatabaseService = require("../src/services/DatabaseService");
const User = require("../src/models/User");
async function main() {
try {
// Connect to database
await DatabaseService.connect();
// Health check
const health = await DatabaseService.healthCheck();
console.log("Health check:", health);
// Create a new user
const userData = {
name: "John Doe",
email: "john.doe@example.com",
age: 30,
};
const user = new User(userData);
await user.save();
console.log("User created:", user);
// Find user by email
const foundUser = await User.findByEmail("john.doe@example.com");
console.log("Found user:", foundUser);
// Update user
await User.updateById(foundUser._id, { age: 31, name: "John Updated" });
console.log("User updated");
// Find all users
const allUsers = await User.findAll();
console.log("All users:", allUsers);
// Direct database operations
const directResult = await DatabaseService.find("users", {
age: { $gte: 25 },
});
console.log("Users 25 and older:", directResult);
// Aggregation example
const aggregationPipeline = [
{ $match: { age: { $gte: 18 } } },
{ $group: { _id: null, averageAge: { $avg: "$age" } } },
];
const avgAge = await DatabaseService.aggregate(
"users",
aggregationPipeline
);
console.log("Average age:", avgAge);
} catch (error) {
console.error("Error in main function:", error);
} finally {
// Disconnect from database
await DatabaseService.disconnect();
}
}
// Handle graceful shutdown
process.on("SIGINT", async () => {
console.log("Received SIGINT, shutting down gracefully...");
await DatabaseService.disconnect();
process.exit(0);
});
process.on("SIGTERM", async () => {
console.log("Received SIGTERM, shutting down gracefully...");
await DatabaseService.disconnect();
process.exit(0);
});
main();