1.前言
flag
不能随便立呀今天搞定这几篇文章
2.mongoose
Mongoose为模型提供了一种直接的,基于scheme结构去定义你的数据模型。它内置数据验证, 查询构建,业务逻辑钩子等,开箱即用
npm i mongoose
安装完直接看README.md来学习也行
3. 基础使用
// 引入 const mongoose = require("mongoose"); //链接数据库 let db = mongoose.connect("mongodb://127.0.0.1:27017/yzs", { useNewUrlParser: true, useUnifiedTopology: true }); //监听数据库的链接状态,在链接之后,再做相关的逻辑操作 mongoose.connection.on("open", function () { console.log("yzs--数据库链接成功"); })
4. 数据库操作
1.创建模型
类似mySQL初始化表,创建初识的字段,配置信息
类型,默认值,最大值,最小值等
let mySchema = new mongoose.Schema({ name: { type: String, default: "无名" }, age: { type: Number, min: 18, default: 20 }, sex: { type: String, default: "未知" } });
2.创建集合/表
第一个参数是集合/表名
第二个参数是表配置信息,就是第一步创建的模型
const MyModel = mongoose.model("Student", mySchema);
3. 插入数据
语法:
model.create("域"",回调函数)
MyModel.create({ name: "韩非子", age: 90, sex: "男" }, function (err, res) { if(!err){ console.log("插入数据成功",res); }else{ console.log("插入数据失败",err); } });
4.修改数据
语法
modle.update({查询条件},
{$set:{修改的值}},
{multi:true/false},
回调函数);
查询条件可以写多个,
通过可视化工具去看下 数据信息再改也行
MyModel.update({ _id: "60d6dae7486e513474490cb5" }, { $set: { age: 20 } }, function (err, res) { if (!err) { console.log("修改数据成功", res); } else { console.log("修改数据失败", err); } });
默认只会修改匹配的第一条数据
第三个参数 {multi:true},
匹配到多条数据,修改所有匹配数据
MyModel.update({ age: 90 }, { $set: { sex: "不知道" } }, {multi:true},function (err, res) { if (!err) { console.log("修改数据成功", res); } else { console.log("修改数据失败", err); } });
5.查询数据
model.find({查询条件},
{想要显示的字段},
{筛选条件},
回调函数)
1.最简单的 查询
查询所有的 最外层的数组里面是对象
MyModel.find(function (err, res) { if (!err) { console.log("查询数据成功", res); } else { console.log("查询数据失败", err); } })
2. 查询条件
MyModel.find({sex:"女"},function (err, res) { if (!err) { console.log("查询数据成功", res); } else { console.log("查询数据失败", err); } })
3.显示字段
默认会显示所有字段
只写一个参数会当做条件 但是可以写空{}
想要显示的字段,给想要显示的字段复制1,不想显示的不写即可,但是_id如果不想显示,需要主动设置为0
MyModel.find({},{name:1,_id:0},function (err, res) { if (!err) { console.log("查询数据成功", res); } else { console.log("查询数据失败", err); } })
4. 查询字段条件 高级用法
$gt
大于
$lt
小于
$gte
大于等于
$lte
小于等于
$ne
不等于
MyModel.find({age:{$gte:70,$lte:60}},{name:1,_id:0},function (err, res) { if (!err) { console.log("查询数据成功", res); } else { console.log("查询数据失败", err); } })
自己修改着条件玩吧
5. 排序
筛选条件
sort 排序 1升序 -1降序 sort:{age:-1}
skip 跳过 {skip:3}
limit限制条数 {limit:3}
优先级
有排序一定是先排序,在做其他限制操作
MyModel.find({},{name:1,age:1,_id:0},{sort:{age:-1},skip:2,limit:3},function (err, res) { if (!err) { console.log("查询数据成功", res); } else { console.log("查询数据失败", err); } })
6. 删除数据
语法
model.remove({查询条件},回调函数)
if (!err) { console.log("删除数据成功", res); } else { console.log("删除数据失败", err); } })
模糊删除很危险
MyModel.remove({ age: 40 }, function (err, res) { if (!err) { console.log("删除数据成功", res); } else { console.log("删除数据失败", err); } })
自己分析这个删除的打印结果吧