const mongoose = require('mongoose');
const studentSchema = new mongoose.Schema({ studentId: String, firstName: String, lastName: String}, { collection: 'students' });
const classSchema = new mongoose.Schema({ classId: String, courseName: String, dateTime: String, instructor: String, students: [String] // This will store student IDs as strings}, { collection: 'classes' });
const Student = mongoose.model('Student', studentSchema);const Class = mongoose.model('Class', classSchema);
module.exports = { Student, Class };
const mongoose = require('mongoose');const { Student, Class } = require('./models');
// MongoDB Cloud URIconst uri = "mongodb+srv://username:password@cluster0.mongodb.net/mydatabase?retryWrites=true&w=majority";
mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => { console.log('Connected to MongoDB Cloud'); registerStudents(); }) .catch((err) => { console.error('Connection error', err); });
const registerStudents = async () => { const registrations = [ { studentId: 'S001', classId: 'C101' }, { studentId: 'S001', classId: 'C102' }, { studentId: 'S002', classId: 'C101' }, { studentId: 'S003', classId: 'C103' } ];
const registrationOps = registrations.map(registration => ({ updateOne: { filter: { classId: registration.classId }, update: { $push: { students: registration.studentId } } } }));
try { const bulkResult = await Class.bulkWrite(registrationOps); console.log('Students registered to classes', bulkResult); } catch (err) { console.error('Error registering students:', err); } finally { mongoose.connection.close().then(() => { console.log('Mongoose connection closed'); }).catch(err => { console.error('Error closing connection:', err); }); }};
const mongoose = require('mongoose');const { Student, Class } = require('./models');
// MongoDB Cloud URIconst uri = "mongodb+srv://username:password@cluster0.mongodb.net/mydatabase?retryWrites=true&w=majority";
mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => { console.log('Connected to MongoDB Cloud'); displayRegistrations(); }) .catch((err) => { console.error('Connection error', err); });
const displayRegistrations = async () => { try { const result = await Class.aggregate([ { $lookup: { from: 'students', localField: 'students', foreignField: 'studentId', as: 'registeredStudents' } }, { $project: { classId: 1, courseName: 1, dateTime: 1, instructor: 1, registeredStudents: { studentId: 1, firstName: 1, lastName: 1 } } } ]);
console.log(JSON.stringify(result, null, 2)); } catch (err) { console.error('Error displaying registrations:', err); } finally { mongoose.connection.close().then(() => { console.log('Mongoose connection closed'); }).catch(err => { console.error('Error closing connection:', err); }); }};
