MongoDB数据库操作---mongoose操作

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的操作大致也就这些,拜拜咯,加油加油!!!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值