Mongoose认知概念
Mongoose是MongoDB的一个对象模型工具,其可以在一部环境下执行。同时它也是针对MongoDB操作的一个队形模型库,封装了MongoDB对文档的一些增删改查等常用方法,让NodeJS操作MongoDB数据库变得更加灵活简单。
Mongoose的使用
安装
npm install mongoose
数据库链接
好吧,为了防止说起来比较不太好说,萍子在这里先推销一波,前两天我写过一篇MongoDB在终端上操作的博文,需要的可以点击下面这个链接MongoDB数据库操作—终端命令操作,然后需要说明的是因为终端操作和mongoose的操作差距不大,在这篇博文中,我就不再很详细的介绍了,望见谅,小伙伴们需要的如果这篇博文找不到的,可以去那篇去看看,谢谢。
好了,接下来开始今天的内容,惯例上代码配解释:
//引入mongoose模板
var mongoose = require("mongoose");
//链接数据库:其中27017是mongodb的端口号,user是要操作的数据库的名字,在上篇博文中的截图中有体现哦
mongoose.connect("mongodb://localhost:27017/user");
var db = mongoose.connection;
//链接失败
db.on("error",function(error){
if(error){
console.log(error);
}
})
//链接成功
db.on("open",function(){
console.log("数据库链接成功");
})
哈哈,如果你操作到了以上这一步,就说明数据库已经连接成功了哦,接下来我们再来看一点配置。
设定数据库的基本架构
原因:就像我们在上一篇博文提到的那样,MongoDB数据库结构比较灵活,因此我们可以提前设定好数据库的架构,防止内部紊乱,不利于存取。
设定架构又称为定义数据库集合的数据模型,定义了字段名和字段的类型以及默认值等等。
其中,字段的类型有:字符串、日期型、数值型、布尔型、null、数组、内嵌文档等。
var Schema = mongoose.Schema({
name:{type:String},//定义的字段和字段类型
age:{type:Number,default:22},//default是默认值的设置,可选
},{
collection:"mytest"//操作的是数据库里的集合名称
})
//model是用Schema构造生成的模型,除了Schema定义的数据库骨架外,还具有数据库操作的行为,类似于管理数据库属性、行为的类
//参数:集合名称,集合数据模型
var Model = db.model("mytest",Schema);
数据库操作
这里需要说明的是,mongoose的操作和命令行的操作大同小异,这里我就不再过多的赘述,把方法等写在这里,如果不晓得怎么用的小伙伴们可以去看一眼上篇博文,[MongoDB数据库操作—终端命令操作],谢谢大家。
增加数据
在终端命令行里的添加用的是insert关键字,在这里我们用的是create关键字
Model.create({name:"河神",age:23},function(err,data){
if(err){
return console.log(err);
}else{
console.log(data);//返回添加数据,会自动生成一个__v,用来标识是create添加的
}
})
删除数据
删除的关键字跟终端操作用到的一样,都是remove
Model.remove({name:"萍子"},function(err,data){
if(err){
console.log(err);
}else{
console.log(data);//返回结果跟终端一样
}
})
修改数据
更改数据的关键字在这里也还是update
Model.update({name:"萍子"},{$set:{age:18}},{multi:true},function(err,data){
if(err){
console.log(err);
}else{
console.log(data);//返回结果跟终端一样
}
})
查询数据
同样的查询用的也还是find,但是不变的还有我的吐槽:哎呀妈呀,这个数据库的查询操作真的是超级多的情况,汗颜汗颜……
下面我大致列出来几种,然后一一备注出来供小伙伴们参考
find({条件},{字段},fun)
//取所有的
Model.find({},{},function(err,data){
if(err){
console.log(err);
}else{
console.log(data);
}
})
//查询年龄小于28的,且只查询名字
Model.find({age:{$lt:28}},{name:1},function(err,data){
if(err){
console.log(err);
}else{
console.log(data);
}
})
//年龄大于25的
Model.find({age:{$gt:25}},null).then((data) => {
console.log(data);
}).catch((err) => {
console.log(err);
})
//姓王的或者姓李的
Model.find({$or:[{name:/^王/},{name:/^李/}]}).then((data)=>{
console.log(data);
}).catch((err)=>{
console.log(err);
})
//分页/游标操作:
//按年龄降序排列
Model.find({},{},{sort:{age:-1}},function(err,data){
if(err){
console.log(err);
}else{
console.log(data);//返回符合的数据内容
}
})
//另一种写法:
Model.find().sort({age:-1}).then(function(data){
console.log(data);
}).catch(function(err){
console.log(err);
})
//排序查询:按年龄倒序排列,跳过前两条查询两条数据
Model.find({},{},{sort:{age:-1},skip:2,limit:2},function(err,data){
if(err){
console.log(err);
}else{
console.log(data);
}
})
好了,呼呼,mongoose的对MongoDB的操作大致也就这些,拜拜咯,加油加油!!!