- Mongodb | And Mongoose Freecodecamp
mongodb and mongoose freecodecamp
mongodb and mongoose freecodecamp
mongodb and mongoose freecodecamp
mongodb and mongoose freecodecamp
mongodb and mongoose freecodecamp
 Monsoon Packages mongodb and mongoose freecodecamp
mongodb and mongoose freecodecamp

Mongodb | And Mongoose Freecodecamp

| SQL | MongoDB | |--------------|---------------| | Database | Database | | Table | Collection | | Row | Document | | Column | Field | 2. Mongoose Setup Install npm install mongoose Connect to MongoDB const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/myApp', useNewUrlParser: true, useUnifiedTopology: true );

"_id": ObjectId("..."), "name": "Alice", "age": 25, "hobbies": ["reading", "coding"]

// Create const addBook = (title, author, pages, done) => const book = new Book( title, author, pages ); book.save((err, data) => done(err, data)); ;

const db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', () => console.log('Connected to DB')); const personSchema = new mongoose.Schema( name: type: String, required: true , age: Number, favoriteFoods: [String] ); const Person = mongoose.model('Person', personSchema); 💡 Model name = singular + capitalized. Mongoose will look for lowercase plural collection ( people ). 4. CRUD Operations (fCC exercises) Create & Save a Document const createPerson = (done) => const alice = new Person( name: 'Alice', age: 25, favoriteFoods: ['pizza'] ); alice.save((err, data) => if (err) return done(err); done(null, data); ); ; Create Many const arrayOfPeople = [ name: 'Bob', age: 30, favoriteFoods: ['burger'] , name: 'Carol', age: 22, favoriteFoods: ['sushi'] ]; Person.create(arrayOfPeople, (err, people) => if (err) return done(err); done(null, people); ); Find // Find by name Person.find( name: 'Alice' , (err, data) => done(err, data)); // Find one by _id Person.findById('65a1b2c3d4e5f67890abcdef', (err, data) => done(err, data)); Update // Find and update Person.findByIdAndUpdate( '65a1b2c3d4e5f67890abcdef', $set: age: 26 , new: true , (err, updatedDoc) => done(err, updatedDoc) ); Delete // Remove one by id Person.findByIdAndRemove('65a1b2c3d4e5f67890abcdef', (err, removedDoc) => done(err, removedDoc); ); // Remove many Person.remove( name: 'Bob' , (err, result) => done(err, result)); 5. Advanced Queries (Chain helpers) const queryChain = (done) => Person.find( favoriteFoods: 'pizza' ) .sort( name: 1 ) // ascending by name .limit(2) .select('-age') // exclude age field .exec((err, data) => done(err, data)); ; 6. Middleware & Validation Pre-save middleware personSchema.pre('save', function(next) console.log(`$this.name is being saved`); next(); ); Custom validator const userSchema = new mongoose.Schema( email: type: String, validate: validator: (v) => /.+\@.+\..+/.test(v), message: 'Invalid email format' ); 7. Common freeCodeCamp Challenges (quick reference) | Challenge | Method | |-----------|--------| | Create & save | new Model() + .save() | | Create many | Model.create([...]) | | Find by name | Model.find( name ) | | Find by ID | Model.findById(id) | | Update by ID | Model.findByIdAndUpdate(id, update, options) | | Delete by ID | Model.findByIdAndRemove(id) | | Chain helpers | .sort().limit().select().exec() | 8. Example Mini Project (fCC style) // Setup mongoose.connect(process.env.MONGO_URI); // Schema const bookSchema = new mongoose.Schema( title: type: String, required: true , author: String, pages: Number );

const Book = mongoose.model('Book', bookSchema);

 Copyright © 2007 All rights reserved SPORTS ( Lakshadweep Tourism )