使用mongoose在nodeJs里操作mongoDB数据库

本文详细介绍了如何在Node.js环境中安装和使用mongoose库连接MongoDB数据库,包括创建表规范、插入数据、查询数据等基本操作。通过实例代码展示了连接数据库、创建表对象、保存文档到数据库以及不同方式查询数据的过程。
摘要由CSDN通过智能技术生成

一、安装mongoDB

点击https://www.cnblogs.com/joe235/p/12908794.html下载mongoDB

Node连接mongoDB

node连接mongodb,需要使用第三方模块mongoose,mongoose支持promises或者回调。

1、安装

npm install mongoose

2、使用require引入到模块中

   let mongoose = require('mongoose')

3、使用mongoose去连接momgodb数据库

mongodb 终端中输入db.getMongo(),获取连接地址
在这里插入图片描述
nodeJs中,使用connect()方法进行连接。

  • 第一个参数为数据库地址,协议是mongodb:,host为mongodb的连接地址,后面跟要连接的数据库名称。
  • 使用新版本的mongoose,需要在第二个参数option中设置useNewUrlParser和useUnifiedTopology为true。否则将会出现以下警示:
    在这里插入图片描述
    nodeJs中写入以下代码:
 mongoose.connect("mongodb://127.0.0.1:27017/test",{
    useNewUrlParser: true,
    useUnifiedTopology: true
});
.then(()=>{
    console.log('数据库连接成功');
})
.catch(()=>{
    console.log('数据库连接失败');
})

到这里,我们就可以实现node连接mongodb了。

4、通过node操作mongodb

1.向数据库创建表规范

先创建表规范(通过Schema方法,创建并返回表规范对象)

let student_Schema = mongoose.Schema({
    name:String,
    age:Number,
    sex:String,
    isVIP:Boolean
})

2.再根据表规范,创建这张表(通过model方法,创建并返回表对象。)

注意:我们这里定义的表名是:Student,在数据库中的表名会转为复数形式创建:students
我们可以将数据库中的表,理解成js中的数组。

let Student = mongoose.model('Student',student_Schema)
 添加一个学生信息
Student.create({
    name:'谢霆锋',
    sex:'男',
    age:40,
    hobbies:['唱歌','演戏','做饭'],
    email:'xtf@123.com',
    isVIP:false
}).then(r=>{
    console.log(r);
})

两种写法

根据表对象,创建一个文档对象,并将该文档对象保存到数据库的数据表中的第一种写法
第一步:创建一个文档对象

let stu1 = new Student({
     name:'小王',
    age:20,
   sex:'男',
  isVIP:true
})

第二步:将该文档对象保存到数据库中

stu1.save(function(err,result){
save方法,通过回调函数,返回添加的结果
 if(!err){
console.log(result);
}
 })

根据表对象,创建一个文档对象,并将该文档对象保存到数据库的数据表中的第二种写法
直接利用表对象的create()方法,创建文档对象,并保存到数据中

Student.create({
    name:'小明',
    age:22,
    sex:'男',
    isVIP:false
}).then(r=>{
    // 通过then方法的回调函数,可以返回添加成功的文档对象
    console.log(r);
})

案例:
引入mongoose库

let mongoose = require('mongoose')

连接数据库

mongoose.connect('mongodb://localhost/mySchool',{ useNewUrlParser: true,useUnifiedTopology: true })
.then(()=>{
    console.log('数据库连接成功');
})
.catch(()=>{
    console.log('数据库连接失败');
})

创建表规范

let student_Schema = mongoose.Schema({
    name:String,
    sex:String,
    age:Number,
    hobbies:[String],
    email:String,
    isVIP:Boolean
})

根据表规范,创建表对象

let Student = mongoose.model('Student',student_Schema)
Student.find().then(r=>{
    console.log(r);

1.查询整张表里面的全部数据

 Student.find().then(r=>{
    console.log(r);
}) 

2.查询整张表里面的全部数据
find方法,传一个对象参数,用于设置查询条件
注意:find方法,返回的是一个数组;如果查询结果只有一条信息,还是返回一个数组;如果查询结果没有信息,返回的是空数组
Student.find({name:‘谢霆锋’}).then(r=>{
console.log®;
})
3. 返回一个对象的查询语句
findOne方法,不传参数,默认返回的是数据表里面的第一条对象

Student.findOne().then(r=>{
    console.log(r);
}) 
  1. 根据条件查询一个对象
    findOne方法,传一个对象参数,用于设置查询条件
    注意:该方法,只返回满足条件的第一个对象
Student.findOne({name:'谢霆锋'}).then(r=>{
    console.log(r);
}) 
  1. 从查询结果中,只返回指定的数据
    通过select方法,限定查询哪些列,默认请情况_id都会返回,如果不需要,通过-_id的方式去掉
Student.find().select('name sex age -_id').then(r=>{
    console.log(r);
}) 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值