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]) //查找一条记录并更新

相关文章
相关标签/搜索