http://www.mongoosejs.net/mongodb
編寫MongoDB驗證,轉換和業務邏輯是很是麻煩的. 因此Mongoose應運而生了.數據庫
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); const Cat = mongoose.model('Cat', { name: String }); const kitty = new Cat({ name: 'Zildjian' }); kitty.save().then(() => console.log('meow'));
Mongoose爲模型提供了一種直接的,基於scheme結構去定義你的數據模型。它內置數據驗證, 查詢構建,業務邏輯鉤子等,開箱即用。mongoose
建立db.jsui
//db.js var mongoose = require('mongoose'), DB_URL = 'mongodb://localhost:27017/mongoosesample'; /** * 鏈接 */ mongoose.connect(DB_URL); /** * 鏈接成功 */ mongoose.connection.on('connected', function () { console.log('Mongoose connection open to ' + DB_URL); }); /** * 鏈接異常 */ mongoose.connection.on('error',function (err) { console.log('Mongoose connection error: ' + err); }); /** * 鏈接斷開 */ mongoose.connection.on('disconnected', function () { console.log('Mongoose connection disconnected'); }); module.exports = mongoose; //導出
Schemaspa
schema是mongoose裏會用到的一種數據模式,能夠理解爲表結構的定義;每一個schema會映射到mongodb中的一個collection,它不具有操做數據庫的能力.net
//user.js var mongoose = require('./db.js'), Schema = mongoose.Schema; var UserSchema = new Schema({ username : { type: String }, //用戶帳號 userpwd: {type: String}, //密碼 userage: {type: Number}, //年齡 logindate : { type: Date} //最近登陸時間 });
定義一個Schema就這麼簡單,指定字段名和類型rest
定義好了Schema,接下就是生成Model。model是由schema生成的模型,能夠對數據庫的操做code
//user.js var mongoose = require('./db.js'), Schema = mongoose.Schema; var UserSchema = new Schema({ username : { type: String }, //用戶帳號 userpwd: {type: String}, //密碼 userage: {type: Number}, //年齡 logindate : { type: Date} //最近登陸時間 }); module.exports = mongoose.model('User',UserSchema);
建立一個test.js文件作一些經常使用操做演示。排序
插入:Model#save([fn]) 索引
var User = require("./user.js"); /** * 插入 */ function insert() { var user = new User({ username : 'Tracy McGrady', //用戶帳號 userpwd: 'abcd', //密碼 userage: 37, //年齡 logindate : new Date() //最近登陸時間 }); user.save(function (err, res) { if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }); } insert();
更新:Model.update(conditions, update, [options], [callback])
var User = require("./user.js"); function update(){ var wherestr = {'username' : 'Tracy McGrady'}; var updatestr = {'userpwd': 'zzzz'}; User.update(wherestr, updatestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } update();
根據id來更新
var User = require("./user.js"); function findByIdAndUpdate(){ var id = '56f2558b2dd74855a345edb2'; var updatestr = {'userpwd': 'abcd'}; User.findByIdAndUpdate(id, updatestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } findByIdAndUpdate();
刪除:Model.remove(conditions, [callback])
var User = require("./user.js"); function del(){ var wherestr = {'username' : 'Tracy McGrady'}; User.remove(wherestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } del();
條件查詢:Model.find(conditions, [fields], [options], [callback])
var User = require("./user.js"); function getByConditions(){ var wherestr = {'username' : 'Tracy McGrady'}; User.find(wherestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getByConditions();
帶選項
var User = require("./user.js"); function getByConditions(){ var wherestr = {'username' : 'Tracy McGrady'}; var opt = {"username": 1 ,"_id": 0}; User.find(wherestr, opt, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getByConditions();
數量查詢:
var User = require("./user.js"); function getCountByConditions(){ var wherestr = {}; User.count(wherestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getCountByConditions();
根據ID查詢:Model.findById(id, [fields], [options], [callback])
var User = require("./user.js"); function getById(){ var id = '56f261fb448779caa359cb73'; User.findById(id, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getById();
模糊查詢
var User = require("./user.js"); function getByRegex(){ var whereStr = {'username':{$regex:/m/i}}; User.find(whereStr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getByRegex();
分頁查詢
var User = require("./user.js"); function getByPager(){ var pageSize = 5; //一頁多少條 var currentPage = 1; //當前第幾頁 var sort = {'logindate':-1}; //排序(按登陸時間倒序) var condition = {}; //條件 var skipnum = (currentPage - 1) * pageSize; //跳過數 User.find(condition).skip(skipnum).limit(pageSize).sort(sort).exec(function (err, res) { if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getByPager();
其餘操做:
建索引 index
/** * 用戶信息 */ var mongoose = require('./db.js'), Schema = mongoose.Schema; var UserSchema = new Schema({ username : { type: String , index: true }, //用戶帳號 userpwd: {type: String}, //密碼 userage: {type: Number}, //年齡 logindate : { type: Date, default:Date.now} //最近登陸時間 }); module.exports = mongoose.model('User',UserSchema);
Model.distinct(field, [conditions], [callback]) //去重
Model.findOne(conditions, [fields], [options], [callback]) //查找一條記錄
Model.findOneAndRemove(conditions, [options], [callback]) //查找一條記錄並刪除
Model.findOneAndUpdate([conditions], [update], [options], [callback]) //查找一條記錄並更新