# Mongo - Mongoose ## Lesson Objectives 1. Explain ODM 1. Explain Schema 1. Explain Create/Save 1. Explain Find 1. Explain Update 1. Explain Remove 1. Explain Helper Functions ## Explain ODM ## Explain Schema article.js ```javascript var mongoose = require('mongoose'); mongoose.set('debug', true); var Schema = mongoose.Schema; var articleSchema = new Schema({ title: { type: String, required: true, unique: true }, author: { type: String, required: true }, body: String, comments: [{ body: String, date: Date }], date: { type: Date, default: Date.now }, hidden: Boolean, meta: { votes: Number, favs: Number } }); //Creating an Article class -- will be stored in 'articles' collection var Article = mongoose.model('Article', articleSchema); module.exports = Article; ``` 1. String 1. Number 1. Date 1. Boolean 1. Mixed 1. ObjectId 1. Array ## Explain Create/Save ```javascript var mongoose = require('mongoose'); var db = mongoose.connection; var Article = require('./article.js'); //Setting up a new article var newArticle = new Article({ title: 'Awesome Title', author: 'Matt' }); newArticle.hidden = false; //connect to mongo mongoose.connect('mongodb://localhost:27017/example'); //if the connection fails db.on('error', function(){ console.log('error'); }); db.once('open', function() { //we're connected! //save article to the database newArticle.save(function(err, article) { if(err) { console.log(err); } else { console.log(article); } mongoose.connection.close(); }); }); ``` ## Explain Find ```javascript Article.find({author:'Matt'}, 'name -_id',function(err, articles){ console.log(articles); mongoose.connection.close(); }) ``` ## Explain Update ```javascript Article.update({ author: 'Matt' }, { $set : { author: 'Matthew' } }, { multi: true }, function (err, response) {...}); ``` ## Explain Remove ```javascript Article.remove({author:'Matt'}, function(err){...}); ``` ```javascript Article.findOne({title:'Harry Potter'}, function(err, article){ article.remove(); }); ``` ## Explain Helper Functions 1. findById 1. findOne 1. findByIdAndUpdate 1. findByIdAndRemove 1. findOneAndUpdate 1. findOneAndRemove