数据库:mongodb
使用mongoose操作数据库
npm init -y
npm i mongoose -s
const mongoose = ("mongoose");
//连接mongoose数据库 + 创建数据库 (有就连接没有就创建)
mongoose.connect("mongodb://127.0.0.1:27017/库名", {
//固定配置
useNewUrlParser:true,
useUnifedToplogy:true;
})
.then(()=>{
console.log("连接数据库成功");
})
.catch(()=>{
console.log("连接数据库失败")
})
//设置表规则:设置表中有哪些字段,类型等 new Schema
const userSchema new Schema({
name:String, //类型为 String
age:Number,
sex:String
})
//往数据库里创建表 mongoose.model 返回操作对象
const userTable = mongoose.model("表名", userSchema);
//往表里新增一条数据 create
userSchema.create({
name:"cherry",
age:16,
sex:"女"
})
.then(()=>{
console.log("数据增加成功");
})
.catch(()=>{
console.log("数据增加失败")
})
//查询1条符合条件的数据 findOne
userTable.findOne({
//条件
age:20
}).then(result=>{
})
或
userTable.findById(ID).them(result=>{})
//查询所有符合条件的数据 find
userTable.find({
age:16,
sex:"男",
money:{
$gt:210,
<:26
}{
name:false //true 保留 false 过滤
//全部只写true则只保留true 只写false 只过滤这些其他都要
}
{
//以字段的值作为条件进行排序
sort:{
age:-1 //正数升序 负数降序
skip:2 //调至指定位置,将该位置之后的数据返回
limit:2 //查询的数据,只要前n条
}
}
}).them(result=>{})
//查询操作符
$gt 大于
$lt 小于
$gte 大于等于
$lte 小于等于
$eq 等于
$ne 不等于
******** 比较操作符只能比较数字 *******
$and 且
$or 或
$nor 都不满足
like:{
$in:"帅气" //存在有帅气的
$nin:["敲代码" ,"女" ] //不存在 敲代码 女的
}
$size 数组的长度
$all
//删除
userTable.deletMany({}).then(result=>{})
//改
userTable.updateOne({原数据},{改的数据}).then(result=>{})
$set:{ //修改
"like.1":"内容" //字段名.下标
//假如不知道要修改内容的下标
"like.$":"内容" //在原数据里加like:{$elemMatch:{$in:"原内容"}}
}
//数组数据增加值
$addToSet:{ //会去重
单个直接添加 多个数据添加家$each 遍历
}
$puch //不去重
$pop //删除 数组数据 like:1 正数从后面开删 负数从前面开删
$pull //删除内容为某某的数据 不能用$each 用$in
//字段值自增1
$inc:{}
删除该数据的字段
$unset:{}
//联表查询
表规则里面要有一个专门的关联字段 存储id
例
现在表名.find({ name:"" }).populate({ //populate 关联到目标表进行联合查询 path:"num", //关联字段 model:目标表名的操作对象 }).exec(err,result)=>{}
*创建表规则的验证
type:Number //常用 Number String Array
required:true //该字段必填
//数字验证
min:0,
max:[150,"你真的大于150岁吗?"] //当大于最大值时,报错提升该文本
//预设字段
enum:["男","女"]
//限制字符长度
maxlength:10,
minlength:1
自定义校验