mongoose的使用
简介
是一个对文档模型(ODM)库,他对Node原生的mongoDB模块进行了进一步的优化封装,并提供了更多的功能.
优势
- 比Node远程的MongoDB驱动更容易
初始化
npm init -y
npm install uniq mongoose
let mongoose = require("mongoose")
// 1.连接数据库
/*一旦运行持续报保持连接, test就是数据库 如果没有自动创建*/
mongoose.connect('mongodb://localhost:27017/test',{
useNewUrlParser:true, // 使用新的URL解析器,用于解决一些安全性问题
useUnifiedTopology:true //统一拓扑结构
})
// 绑定数据库连接的监听
mongoose.connection.on('open',function(err){
if(err){
console.log("数据库连接失败",err)
} else{
console.log("数据库连接成功")
// 操作数据库
let Schema = mogoose.Schema
}
})
mongoose创建模型
创建模型
// 进入模式对象
let Schema = mongoose.Schema;
// 创建约束对象
let studentsRule = new Schema({
className:{
type:String,
required:true, // 是否必填
unique:true, // 是否唯一(不可重复)
default:"xxx" // 默认值
},
hobby:[String], // 限制类型只能维数组,数组中每一项必须为字符串
info:Schema.Types.Mixed, // 接受所有类型
})
/*
备注: type表示字段的类型可以是 String Number Booler Date等
*/
// 创建模型对象
// 用于生成某个集合所对应的模型对象
let stuModel = mongoose.model('students',studentsRule)
增加
stuModel.create({
className:"3班",
hobby:['爱好'],
info:"基本信息"
},(err,data)=>{
if(err){console.log(err)}
else{console.log(data)}
})
查询
/*
fiund方法
返回一个数组
查询为空返回空数组
*/
stuModel.find({className:'3班'},(err,data)=>{
if(err){console.log(err)}
else{console.log(data)}
})
/*
findOne方法
返回一个对象
查询为空返回 null
*/
stuModel.findOne({className:'3班'},(err,data)=>{
if(err){console.log(err)}
else{console.log(data)}
})
更新
/*
updateMany方法 更新多匹配的内容
updateOne方法 更新一个匹配的内容
*/
stuModel.updateMany({className:'3班'},(err,data)=>{
if(err){console.log(err)}
else{console.log(data)}
})
删除
/*
deleteMany 方法 删除多个匹配项
delleOne 方法 删除一个匹配项
*/
stuModel.deleteMany({className:'3班'},(err,data)=>{
if(err){console.log(err)}
else{console.log(data)}
})