一、安装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);
})
- 根据条件查询一个对象
findOne方法,传一个对象参数,用于设置查询条件
注意:该方法,只返回满足条件的第一个对象
Student.findOne({name:'谢霆锋'}).then(r=>{
console.log(r);
})
- 从查询结果中,只返回指定的数据
通过select方法,限定查询哪些列,默认请情况_id都会返回,如果不需要,通过-_id的方式去掉
Student.find().select('name sex age -_id').then(r=>{
console.log(r);
})