mongoose 使用

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

Model

定義好了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]) //查找一條記錄並更新

相關文章
相關標籤/搜索