MongoDB的使用

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);
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值