//01_mongoDB.js
/*
数据库:
1. 关系型数据库: mySql, 操作数据库使用的SQL语句实现的
2. 非关系型数据库: mongoDB, 是通过JS的语法(面向对象)操作数据库
数据库, 表, 字段
mongoDB数据的使用步骤:
1. 安装node里的mongoDB数据库核心插件: mongoose
2. 指定数据的数据的存放路径
2.1 在目标位置新建一个空文件夹
2.2 通过命令行cd到mongoDB安装目录里面的bin文件下
2.3 指定数据库存放位置,命令: mongod –dbpath=目标空文件夹路径
2.4 启动数据库, 命令: mongo
*/
const express = require(“express”);
const bp = require(“body-parser”);
const cors = require(“cors”);
const app = express();
app.use(bp.urlencoded({extended:false}));
app.use(bp.json());
app.use(cors());
app.listen(4455, function(){
console.log(“监听4455端口…”);
});
// 1. 引入mongoose插件
const mongoose = require(“mongoose”);
/* 2. 链接数据库
2.1 需要用户名密码 mongoose.connect(‘mongodb://username:password@host:port/database?options…’);
2.2 不需要用户名密码 mongoose.connect(‘mongodb://host:port/database?options…’);
*/
mongoose.connect(“mongodb://root:123456@localhost:27017/DB0714”);
//3. 监听链接数据库的结果
mongoose.connection.on(“open”, function(){
console.log(“数据库连接成功!”);
/* 数据库连接成功之后, 才可以对数据库做作为的CRUD操作 */
// 创建model, 指定存储数据的字段及数据类型
const { Schema } = mongoose;
const personSchema = new Schema({
name:String,
age:Number,
sex:String
}, {collection:”person”});
const personModel = mongoose.model(“person”, personSchema);
app.post(“/create”, function(req,res){
// 添加数据
personModel.create({
name:req.body.username,
age:req.body.age,
sex:req.body.sex
}, function(error, result){
if(!error){
res.send({msg:”添加数据成功!”, result});
}else {
res.send({msg:”添加数据失败!”, error});
}
});
});
app.post(“/delete”, function(req,res){
// 数据库删除数据
personModel.deleteMany({_id:req.body.deleteId}, function(error, result){
if(!error){
res.send({result});
}else {
res.send({error});
}
});
});
app.post(“/update”, function(req,res){
personModel.updateOne({_id:”62cf9419f8da34e82664a885″}, {$set:{age:22}}, function(error, result){
if(!error){
res.send({msg:”修改成功”, result});
}else {
res.send({msg:”修改失败!”, error});
}
});
});
app.get(“/retrieve”, function(req,res){
//获取所有数据
/*
find(查询条件(可选), 想要获取的字段(可选), 筛选条件(可选), 回调函数)
*/
personModel.find(function(error, result){
if(!error){
res.send(result);
}else {
res.send(error);
}
});
// 通过查询条件设置精确值查询数据
// personModel.find({sex:”男”, age:50}, function(error, result){
// if(!error){
// res.send(result);
// }else {
// res.send(error);
// }
// });
/* 通过查询条件设置区间值查询数据
$gt 大于
$lt 小于
$gte 大于等于
$lte 小于等于
$ne 不等于
$in 包含
$nin 不包含
*/
// personModel.find({sex:”男”, age:{$gt:20, $lt:60}}, function(error, result){
// if(!error){
// res.send(result);
// }else {
// res.send(error);
// }
// });
// personModel.find({sex:{$nin:[“男”, “女”]}}, function(error, result){
// if(!error){
// res.send(result);
// }else {
// res.send(error);
// }
// });
//想要获取的字段 0表示不获取某个字段, 不写的默认获取
// personModel.find(null, {__v:0, sex:0}, function(error, result){
// if(!error){
// res.send(result);
// }else {
// res.send(error);
// }
// });
//想要获取的字段 1表示获取某个字段, 不写的默认不获取, 但是_id, 不写也会获取到, 如果不想要, 要显式的设置为0
// personModel.find({sex:”男”}, {name:1, _id:0}, function(error, result){
// if(!error){
// res.send(result);
// }else {
// res.send(error);
// }
// });
/*
筛选条件
1. sort 排序 1:升序, -1:降序
2. skip 跳过
3. limit 限制
优先级: sort->skip->limit
*/
// personModel.find(null, { __v:0 }, {skip:2, sort:{age:-1}, limit:3}, function(error, result){
// if(!error){
// res.send(result);
// }else {
// res.send(error);
// }
// });
});
});