1.首先你需要让项目模块化
npm init -y
才可以下载模块mongoose
2.安装mongoose模块
npm i mongoose
3.创建连接,保证连接上数据库
mongoose.connect('mongodb://localhost/Shop').
then(r=>{
//进入then说明连接成功
console.log("连接数据库成功!");}).
catch(e=>{
//进入catch说明连接失败
console.log("连接数据库失败!");})
4.创建表
前提:需要对表结构定义
5.对表进行增删改查操作
文章目录
- 增加
- 删除
- 修改
- 查询
前言
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
具体内容可参考Mongoose 5.0 中文文档
一、数据库内容的增加
//导入模块mongoose
let mongoose = require("mongoose");
//连接数据库
mongoose.connect('mongodb://localhost/shop').
then(r => {
//进入then说明连接成功
console.log("连接数据库成功!");
}).
catch(e => {
//进入catch说明连接失败
console.log("连接数据库失败!");
})
//创建表结构
//前提:需要对这个表结构定义好Schema
let good_Schema = mongoose.Schema({
goodId: Number,
goodName: String,
goodPrice: Number,
isTeJia: Boolean,
liPin: [String]
})
// 创建表第一种方式
let Goods = mongoose.model("goods", good_Schema);
// //向表中添加数据
// let g1 = new Goods({
// "goodId": 1,
// "goodName": "iphone",
// "goodPrice": 8899,
// "isTeJia": false,
// "liPin": ["手机壳", "贴膜", "蓝牙耳机"]
// })
// //将商品的实例添加到表中
// g1.save();
// 创建表第二种方式
Goods.create([
{
"goodId": 2,
"goodName": "华为手机",
"goodPrice": 7998,
"isTeJia": true,
"liPin": ["手机壳", "贴膜", "充电适配器"]
},
{
"goodId": 3,
"goodName": "小米手机",
"goodPrice": 2999,
"isTeJia": true,
"liPin": ["手机壳", "贴膜", "蓝牙耳机", "充电适配器"]
},
{
"goodId": 4,
"goodName": "oppo手机",
"goodPrice": 1999,
"isTeJia": false,
"liPin": ["贴膜", "充电适配器"]
}
]).
then(r => {
console.log("添加成功!");
// console.log(r);
}).
catch(e => {
console.log("添加失败!");
})
二、数据库内容的删除
//导入模块mongoose
let mongoose = require("mongoose");
//连接数据库
mongoose.connect('mongodb://localhost/shop').
then(r => {
//进入then说明连接成功
console.log("连接数据库成功!");
}).
catch(e => {
//进入catch说明连接失败
console.log("连接数据库失败!");
})
//创建表结构
//前提:需要对这个表结构定义好Schema
let good_Schema = mongoose.Schema({
goodId: Number,
goodName: String,
goodPrice: Number,
isTeJia: Boolean,
liPin: [String]
})
// 创建表第一种方式
let Goods = mongoose.model("goods", good_Schema);
//删除
Goods.deleteone({ "goodId": 2 }).then(r => {
console.log(r);
console.log(r.acknowledged);
console.log("删除的条数" + r.deletedCount);
})
//删除多条
Goods.deleteMany({ "goodName": "小米手机" }).then(r => {
console.log(r);
console.log(r.acknowledged);
console.log("删除的条数" + r.deletedcount);
})
三、数据库内容的修改
//导入模块mongoose
let mongoose = require("mongoose");
//连接数据库
mongoose.connect('mongodb://localhost/shop').
then(r => {
//进入then说明连接成功
console.log("连接数据库成功!");
}).
catch(e => {
//进入catch说明连接失败
console.log("连接数据库失败!");
})
//创建表结构
//前提:需要对这个表结构定义好Schema
let good_Schema = mongoose.Schema({
goodId: Number,
goodName: String,
goodPrice: Number,
isTeJia: Boolean,
liPin: [String]
})
// 创建表第一种方式
let Goods = mongoose.model("goods", good_Schema);
//修改一条记录 updateOne("条件","修改的值")
Goods.updateOne({ "goodId": "1" }, { "goodName": "苹果14", " goodPrice": 8888 }).then(r => {
console.log(r);
})
//修改多条
Goods.updateMany({ "goodName": "oppo手机" }, { "goodPrice": 3999, "isTeJia": false }).then(r => {
console.log(r);
})
四、数据库内容的查询
//导入模块mongoose
let mongoose = require("mongoose");
//连接数据库
mongoose.connect('mongodb://localhost/shop').
then(r => {
//进入then说明连接成功
console.log("连接数据库成功!");
}).
catch(e => {
//进入catch说明连接失败
console.log("连接数据库失败!");
})
//创建表结构
//前提:需要对这个表结构定义好Schema
let good_Schema = mongoose.Schema({
goodId: Number,
goodName: String,
goodPrice: Number,
isTeJia: Boolean,
liPin: [String]
})
// 创建表第一种方式
let Goods = mongoose.model("goods", good_Schema);
//查询全部记录
// Goods.find().then(r => {
// r.forEach((item, index) => {
// console.log(item.goodName, item.goodPrice, item.isTeJia, item.liPin);
// })
// })
//获取条件匹配的多条记录
// Goods.find({ "goodName":"oppo手机" }).then(r => {
// console.log(r);
// })
//查询一条记录
// Goods.findOne({ "goodId": 1 }).then(r => {
// console.log(r);
// })
// Goods.findOne({ "goodName": "oppo手机" }).then(r => {
// console.log(r);
// })
//查询指定的列内容
// Goods.find().select("goodId goodName").then(r => {
// console.log(r);
// })
//查询价格大于5000元的手机信息,-_id去掉数据库产生的自增key
// Goods.find({ "goodPrice": { $gt: 5000 } }).select("goodName goodPrice -_id").then(r => {
// console.log(r);
// })
//查询价格在500 - 10000之间的手机的名称和价格信息 $lt:小于 $gt:大于
// Goods.find({ "goodPrice": { $gt: 5000, $lt: 10000 } }).select("goodName goodPrice -_id").then(r => {
// console.log(r);
// })
//模糊查询查询手机名称华x的手机信息
// Goods.find({ "goodName": { $regex: /^华/ig } }).select("goodName goodPirce -_id").then(r => {
// console.log(r);
// })
//查询手机名称中有O字母的手机信息
// Goods.find({ "goodName": { $regex: /O/ig } }).select("goodName goodPrice -_id").then(r => {
// console.log(r);
// })
//查询华为手机的数量 聚合函数
// Goods.count({ "goodName": "华为手机" }).then(r => {
// console.log(r);
// })
//排序按照价格从低到高显示出来
// Goods.find().sort("goodPrice").select("goodName goodPrice -_id").then(r => {
// console.log(r);
// })
//排序按照价格从高到底显示出来
//sort(-条件) 表示降序:从大到小
// Goods.find().sort("goodPrice").select("goodName goodPrice -_id").then(r => {
// console.log(r);
// })
//分页查询
/**
*当前页 变量currentNo
*每页条数 变量pageSize
*假设总记录数 100条 每页显示6条
*第一页 (当前页-1)*每页记录数 对应左边的数字 当前页*每页记录数
*0-5条 (currentNo-1)*pageSize (1-1)*6 = 0,
*第二页 ------>
*6-10条 (2-1)*6 = 6,
*第三页
*11-15
*/
// //查询第一页的内容 skip()跳过:偏移位置 limit()每页数量:
// let currentNo = 1
// let pageSize = 2
// let offset = (currentNo - 1) * pageSize
// //分页查询
// Goods.find().skip(offset).limit(pageSize).select("goodId goodName goodPrice -_id").then(r => {
// console.log(r);
// })
//查询礼品中包含手机壳和适配器的手机信息
Goods.find({ "liPin": { $in: ["手机壳", "适配器"] } }).select("goodId goodName goodPrice -_id").then(r => {
console.log(r);
})