Mongoose CRUD Operations
create, read, update and delete (as an acronym CRUD) are the four basic functions of persistent storage. Using some methods of Mongoose we will implement CRUD operations.
Lets view the methods for CRUD operations
Create | save() |
Read | find(), findOne(), findById() |
Update | update(), findOneAndUpdate(), findByIdAndUpdate() |
Delete | remove(), findOneAndRemove(), findByIdAndRemove() |
Constructor Model()
Model constructor
Syntax:
Model(doc)
save()
Saves the document.
Syntax:- save([options],
[options.safe], [options.validateBeforeSave], [fn])
var mongoose=require('mongoose'); var Schema = mongoose.Schema; var con ; var userSchema= new Schema({ userid: {type:String, required:true, trim:true,index:true,unique:true}, chips: {type:Number} }); var userModel = mongoose.model('users',userSchema); var alex = new userModel({userid:'Alex',chips:10000,regdate:Date.now}); var cb = function(err){ if(!err) console.log("Connection Opened"); else console.log("Connection Opened Failed"); }; mongoose.connect("mongodb://localhost/tutorialtous",cb); con = mongoose.connection; alex.save(function(err,alex){ if(err){ console.log(err); }else{ console.log("Document Save Done"); } });
find()
Find the documents of a collection/model.
Note:-
We need to call find() methods with Model Instances
unlike save(), means like userModel.find() is valid.
Syntax:-
find(conditions, [projection], [options], [callback])
Conditions, projection, options are similar to mongodb's find() method.
Example:-
var mongoose=require('mongoose'); var Schema = mongoose.Schema; var con ; var userSchema= new Schema({ userid: {type:String, required:true, trim:true,index:true,unique:true}, chips: {type:Number} }); var userModel = mongoose.model('users',userSchema); var alex = new userModel({userid:'Alex',chips:10000,regdate:Date.now}); var mark = new userModel({userid:'Mark',chips:15000,regdate:Date.now}); var cb = function(err){ if(!err){ console.log("connection opened \t"+con.readyState); }else{ console.log(err); } }; mongoose.connect("mongodb://localhost/tutorialtous",cb); con = mongoose.connection; var echoRecords =function(err,log){ console.log("Total Records Found:"+log.length); for(var i=0;i<log.length;i++){ console.log((i+1)+"\t"+log[i]._id+"\t"+log[i].userid+"\t"+log[i].chips); } }; var saveResponse =function(err){ if(err){ console.log("save Failed"); }else{ console.log("save success"); } }; alex.save(saveResponse); mark.save(saveResponse); userModel.find(echoRecords); userModel.find({userid:"Alex"},echoRecords); userModel.find({userid:"Alex"},{_id:0},echoRecords);
update()
Updates documents in the database without returning them.
Syntax:-
update(conditions, doc,
[options], [callback])
Example:-
userModel.update({userid:"Alex"},{chips:25000},function(err,log){ console.log("Number of Records Effected"+log); }); userModel.update({chips:{$lt:20000}},{chips:35000},{multi:true},function(err,log){ console.log("Number of Records Effected"+log); });
It will returns number of documents updated count
remove()
Removes document/s from the collection.
Syntax:-
remove(conditions, [callback])
Note:-
1. If condition not passed or empty then all the
records will be removed.
Example:-
1.
Remove the document having userid "Alex"
userModel.remove({userid:"Alex"})
2. Remove all documents of users collection
userModel.remove()
findOne()
Finds a single document by its _id field.
Syntax:-
findOne([conditions], [projection],
[options], [callback])
Example:-
1.Find the user
details having the id "57971362517cdfd0260a638c"
userModel.findOne({_id:"57971362517cdfd0260a638c"},"chips,userid", function(err,data){if(!err) console.log(data);});
findOneAndRemove()
Issue a mongodb findAndModify remove command.
Syntax:-
findOneAndRemove(conditions, [options],
[callback])
Example:-
1. Remove the user details
having the id "57971362517cdfd0260a638c"
userModel.findOneAndRemove({_id:"57971362517cdfd0260a638c"}, function(err,data){if(!err) console.log(data);});
findByIdAndUpdate()
Finds a matching document, updates it according to the update
arg, passing any options, and returns the found document (if
any) to the callback. The query executes immediately if callback
is passed else a Query object is returned.
Syntax:-
findByIdAndUpdate(id, [update], [options],
[callback])
Example:-
1. Reset the chips for the id
"5797137d0856a7c41299e099"
userModel.findByIdAndRemove("5797137d0856a7c41299e099", {chips:0},function(err,data){if(!err) console.log(data);});
findById()
Finds a single document by its _id field. findById(id).
Syntax:-
findById(id, [projection],
[options], [callback]) Example:-
1.Find the user
details having the id "57971362517cdfd0260a638c"
userModel.findById("57971362517cdfd0260a638c","chips,userid", function(err,data){if(!err) console.log(data);});
findByIdAndRemove()
Issue a mongodb findAndModify remove command by a document's
_id field. findByIdAndRemove(id, ...) is equivalent to
findOneAndRemove({ _id: id }, ...).
Syntax:-
findByIdAndRemove(id, [options],
[callback])
Example:-
1. Remove the user details
having the id "57971362517cdfd0260a638c"
userModel.findByIdAndRemove("57971362517cdfd0260a638c", function(err,data){if(!err) console.log(data);});
findByIdAndUpdate()
Finds a matching document, updates it according to the update
arg, passing any options, and returns the found document (if
any) to the callback. The query executes immediately if callback
is passed else a Query object is returned.
Syntax:-
findByIdAndUpdate(id, [update], [options],
[callback])
Example:-
1. Reset the chips for the
id "5797137d0856a7c41299e099"
userModel.findByIdAndRemove("5797137d0856a7c41299e099", {chips:0},function(err,data){if(!err) console.log(data);});
count()
Counts number of matching documents in a database collection.
Syntax:-
count(conditions,
[callback])
Example:-
1. Find Number of Documents
in users Schema
userModel.count({},function(err,count){ console.log("No Of Records in users Schema:"+count); });
2. Find Number of Documents in users Schema having
chips<=25000
userModel.count({chips:{$lte:25000}},function(err,count){ console.log("chips <=25000 :"+count); });
where()
Creates a Query, applies the passed conditions, and returns the
Query.
Syntax:-
where(path,
[val])
Example:-
1. Find the users having chips
<10000
userModel.where('chips').lt(10000);
2. Find the users having chips <10000 of Country 'USA'
userModel.where('chips').lt(10000).where('country').eq('USA');
Complete Example:-
var mongoose=require('mongoose'); var Schema = mongoose.Schema; var con = mongoose.createConnection(); var userSchema= new Schema({ trim:true,index:true,unique:true}, }); var userModel = mongoose.model('users',userSchema); userid: {type:String, required:true, chips: {type:Number} var echo=function(err,log){ if(!err){ console.log(log); } } mongoose.connect("mongodb://localhost/tutorialtous",cb); con = mongoose.connection; userModel.where('chips').lt(10000) .where('country').eq('USA').exec(echo);