Reference
Mongoose APIs
Mongoose Query APIs
Cheat Sheet
MongoDB
- $mongod : start MongoDB server (localhost:27017)
- $mongo : open MongoDB console (connect to local server by default)
- show dbs : show databases on the server
- use DB_NAME : select database DB_NAME
- show collections : show collections in the selected database
- db.COLLECTION_NAME.find() : perform the find query on collection with the COLLECTION_NAME name to find any items
- db.COLLECTION_NAME.find({“_id” : ObjectId(“549d9a3081d0f07866fdaac6”)}) : perform the find query on collection with the COLLECTION_NAME name to find item with ID 549d9a3081d0f07866fdaac6
- db.COLLECTION_NAME.find({“email” : /gmail/}) : perform the find query on collection with the COLLECTION_NAME name to find items with email property matching /gmail
- db.COLLECTION_NAME.update(QUERY_OBJECT, SET_OBJECT) : perform the update query on collection with the COLLECTION_NAME name to update items that match QUERY_OBJECT with SET_OBJECT
- db.COLLECTION_NAME.remove(QUERY_OBJECT) : perform remove query for items matching QUERY_OBJECT criteria on the COLLECTION_NAME collection
- db.COLLECTION_NAME.insert(OBJECT) : add OBJECT to the collection with the COLLECTION_NAME name
Mongoose Installation - $sudo npm install mongoose : install the latest Mongoose locally`
- $sudo npm install mongoose@3.8.20 –save : install Mongoose v3.8.20 locally and save to package.json
MongoDB Console
Mongoose Basic Usage
var mongoose = require('mongoose')
var dbUri = 'mongodb://localhost:27017/api'
var dbConnection = mongoose.createConnection(dbUri)
var Schema = mongoose.Schema
var postSchema = new Schema ({
title : String,
text : String
})
var Post = dbConnection.model('Post', postSchema, 'posts')
Post.find({},function(error, posts){
console.log(posts)
process.exit(1)
})
Mongoose Schema
- String
- Boolean
- Number
- Date
- Array
- Buffer
- Schema.Types.Mixed
- Schema.Types.ObjectId
Create, Read, Update, Delete (CRUD) Mongoose Example
// Create
var post = new Post({title : 'a', text : 'b')
post.save(function(error, document){
...
})
// Read
Post.findOne(criteria, function(error, post) {
...
})
// Update
Post.findOne(criteria, function(error, post) {
post.set()
post.save(function(error, document){
...
})
})
// Delete
Post.findOne(criteria, function(error, post) {
post.remove(function(error){
...
})
})
Mongoose Model Methods
- find(criteria, [fields], [options], [callback]) : find document; callback has error and documents arguments
- count(criteria, [callback])) : return a count; callback has error and count arguments
- findById(id, [fields], [options], [callback]) : return a single document by ID; callback has error and document arguments
- findByIdAndUpdate(id, [update], [options], [callback]) : executes MongoDB’s findAndModify to update by ID
- findByIdAndRemove(id, [options], [callback]) : executes MongoDB’s findAndModify to remove
- findOne(criteria, [fields], [options], [callback]) : return a single document; callback has error and document arguments
- findOneAndUpdate([criteria], [update], [options], [callback]) : executes MongoDB’s findAndModify to update
- findOneAndRemove(id, [update], [options], [callback]) : executes MongoDB’s findAndModify to remove
- update(criteria, update, [options], [callback]) : update documents; callback has error, and count arguments
- create(doc(s), [callback]) : create document object and save it to database; callback has error and doc(s) arguments
- remove(criteria, [callback]) : remove documents; callback has error argument
Mongoose Document Methods
- save([callback]) : save the document; callback has error, doc and count arguments
- set(path, val, [type], [options]) : set value on the doc’s property
- get(path, [type]) : get the value
- isModified([path]) : check if the property has been modified
- populate([path], [callback]) : populate reference
- toJSON(options) : get JSON from document
- validate(callback) : validate the document
Query Helpers
animalSchema.query.byName = function(name) {
return this.where({ name : new RegExp(name, 'i') });
};
var Animal = mongoose.model('Animal', animalSchema);
Animal.find().byName('fido').exec(function(err, animals) {
console.log(animals);
});
Animal.findOne().byName('fido').exec(function(err, animal) {
console.log(animal);
});
Indexes
var animalSchema = new Schema({
name:tring,
type:String,
tags:{ type : [String], index : true } // field level
});
animalSchema.index({ name : 1, type : -1 }); // schema level