mongoose
monogoDB:一个数据库品牌的名字
mingod:启动数据库的命令
monogo:连接数据库的命令
mongoose:在Node平台下,一个知名的用于帮助开发者
写代码连接数据库,借助第三方的一个包
mongoose在node平台下,更加简单,高效,安全,稳定的操作mongoDB
使用方法
引入mongoose
let mongoose = require('mongoose')
1.连接数据库
mongoose.connect('mongodb://localhost:27017/demo',{
useNewUrlParser:true, //使用一个新的URL解析器,用于解决一些安全性问题
useUnifiedTopology:true //使用一个统一的新的拓扑结构
})
2.绑定数据库连接的监听
mongoose.connection.on('open', function (err) {
if (err) {
console.log('数据库链接失败')
} else {
console.log('数据库连接成功')
}
}
3.引入模式对象(请来一个帮你看门的保安)
mongoose.connection.on('open', function (err) {
if (err) {
console.log('数据库链接失败')
} else {
console.log('数据库连接成功')
//3.操作数据库
console.log('操作数据库')
//1.请来一个帮你看门的保安 ----引入模式对象
let Schema = mongoose.Schema
}
}
4.创建约束对象(制定你家的规则)
mongoose.connection.on('open', function (err) {
if (err) {
console.log('数据库链接失败')
} else {
console.log('数据库连接成功')
//3.操作数据库
console.log('操作数据库')
//1.请来一个帮你看门的保安 ----引入模式对象
let Schema = mongoose.Schema
//2.制定你家的规则 ----创建约束对象
let studentsRule = new Schema({
stu_id:{
type:String,//限制学号必须为字符串
required:true, //限制学号为必填项
unique:true //限制学号是唯一的
},
name:{
type:String,//限制姓名必须为字符串
required:true, //限制姓名为必填项
},
age:{
type:Number,//限制年龄必须为字符串
required:true, //限制年龄为必填项
},
sex:{
type:String,//限制性别必须为字符串
required:true, //限制性别为必填项
},
hobby:[String], //限制爱好只能为数组,数组中的每一项必须为字符串
info:Schema.Types.Mixed, //接收所有类型
date:{
type:Date,
default:Date.now()
},
enable_flag:{
type:String,
default:true
}
})
}
5.创建模型对象(告诉保安你的规则)
mongoose.connection.on('open', function (err) {
if (err) {
console.log('数据库链接失败')
} else {
console.log('数据库连接成功')
//3.操作数据库
console.log('操作数据库')
//1.请来一个帮你看门的保安 ----引入模式对象
let Schema = mongoose.Schema
//2.制定你家的规则 ----创建约束对象
let studentsRule = new Schema({
stu_id:{
type:String,//限制学号必须为字符串
required:true, //限制学号为必填项
unique:true //限制学号是唯一的
},
name:{
type:String,//限制姓名必须为字符串
required:true, //限制姓名为必填项
},
age:{
type:Number,//限制年龄必须为字符串
required:true, //限制年龄为必填项
},
sex:{
type:String,//限制性别必须为字符串
required:true, //限制性别为必填项
},
hobby:[String], //限制爱好只能为数组,数组中的每一项必须为字符串
info:Schema.Types.Mixed, //接收所有类型
date:{
type:Date,
default:Date.now()
},
enable_flag:{
type:String,
default:true
}
})
//3.告诉保安你的规则 ----创建模型对象
let stuModel = mongoose.model('students',studentsRule) //用于生成某个模型对象
}
6.CRUD(真正有人要进入你家了)
//2.绑定数据库连接的监听
mongoose.connection.on('open', function (err) {
if (err) {
console.log('数据库链接失败')
} else {
console.log('数据库连接成功')
//3.操作数据库
console.log('操作数据库')
//1.请来一个帮你看门的保安 ----引入模式对象
let Schema = mongoose.Schema
//2.制定你家的规则 ----创建约束对象
let studentsRule = new Schema({
stu_id:{
type:String,//限制学号必须为字符串
required:true, //限制学号为必填项
unique:true //限制学号是唯一的
},
name:{
type:String,//限制姓名必须为字符串
required:true, //限制姓名为必填项
},
age:{
type:Number,//限制年龄必须为字符串
required:true, //限制年龄为必填项
},
sex:{
type:String,//限制性别必须为字符串
required:true, //限制性别为必填项
},
hobby:[String], //限制爱好只能为数组,数组中的每一项必须为字符串
info:Schema.Types.Mixed, //接收所有类型
date:{
type:Date,
default:Date.now()
},
enable_flag:{
type:String,
default:true
}
})
//3.告诉保安你的规则 ----创建模型对象
let stuModel = mongoose.model('students',studentsRule) //用于生成某个模型对象
//4.真正有人要进入你家了 -----CRUD
stuModel.create({
stu_id:'004',
name:'班长',
age:21,
sex:'男',
hobby:['打游戏','学高数','学习'],
info:'可爱的男子',
},function(err,data){
if(!err) console.log(data)
else console.group(err)
})
}
})
CRUD操作
新增操作
对象.create
对象.create({
stu_id:'004',
name:'班长',
age:21,
sex:'男',
hobby:['打游戏','学高数','学习'],
info:'可爱的男子',
},function(err,data){
if(!err) console.log(data)
else console.log(err)
})
查询操作
对象.find
find方法:
1.返回的事一个数组,就算是一条数据,也包裹成一个数组
2.若查询结果为空,则返回一个空数组
stuModel.find({name:'蒨'},function(err,data){
if(!err) console.log(data)
else console.log(err)
})
对象.findone
1.若有结果,返回的是一个对象
2.若没有结果,返回一个null
stuModel.findone({name:'蒨'},function(err,data){
if(!err) console.log(data)
else console.log(err)
})
更新操作
对象.updateOne
对象.updateMany
stuModel.updateOne({name:'谢雨蒨'}{age:22},function(err,data){
if(!err) console.log(data)
else console.log(err)
})
删除操作
对象.deleteMany