• 113545

    文章

  • 803

    评论

  • 12

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

mongoose 使用

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

http://www.mongoosejs.net/

编写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结构去定义你的数据模型。它内置数据验证, 查询构建,业务逻辑钩子等,开箱即用。

 

创建db.js

//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;  //导出

Schema

schema是mongoose里会用到的一种数据模式,可以理解为表结构的定义;每个schema会映射到mongodb中的一个collection,它不具备操作数据库的能力

//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就这么简单,指定字段名和类型

Model

定义好了Schema,接下就是生成Model。model是由schema生成的模型,可以对数据库的操作

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

 


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客