8、Node.js中使用MongoDB

1、MongoDB的基本感知

MongoDB是非关系型数据库,不用设计表,每个表都是集合的概念。装好MongoDB后,打开终端命令行输入命令mongo连接数据库,就可以在命令行下使用MongoDB的一些命令:
在这里插入图片描述
如图所示MongoDB连接成功。
MongoDB的一些基本命令:

  1. show dbs 查看 显示所有数据库List item

  1. use 数据库名称 切换到指定的数据库(如果没有会创建) 当插入数据后 show dbs会显示出来。
  2. 插入数据,db.students.insertOne({"name": "counterrr"})
  3. 查当前数据下所有集合 show collections
  4. db.students.find()查出students集合下所有数据。
    在这里插入图片描述

2、Node.js中使用MongoDB

使用MongoDB官方的包mongodb官方文档
但是我们真正开发一般不会使用这个包。一般使用第三方mongoose来操作MongoDB,第三方包基于官方的包mongodb做了封装。接下来我们基于mongoose来做下demo

  1. 在桌面创建文件mogoose-demo,然后将这个文件夹拖到vscode编辑器。
  2. 然后打开vscode的终端命令行,输入命令npm init -y快速生成项目说明书。
  3. 再输入命令npm install mongoose。安装mongoose这个包。
  4. 在根目录下创建db.js,输入代码:
    // 引入mongoose
    const mongoose = require('mongoose');
    // 连接MongoDB数据库
    mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, 	useUnifiedTopology: true});
    // 创建模型,Cat这个模型它会自动生成一个cats集合,里面有name这个属性,并且是String类型的
    const Cat = mongoose.model('Cat', { name: String });
    //  实例化一个Cat
    const kitty = new Cat({ name: 'Zildjian' });
    // 持久化保存
    kitty.save().then(() => console.log('meow'));
    
    然后我们运行下,在命令中输入node db.js,如下:
    在这里插入图片描述
    成功打印出来。然后我们去终端命令行查看:
    在这里插入图片描述
    发现是有数据的。接下来我循环让它生成100条数据并且插入到数据库中,代码如下:
 // 引入mongoose
 const mongoose = require('mongoose');
 // 连接MongoDB数据库
 mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, 	useUnifiedTopology: true});
 // 创建模型,Cat这个模型它会自动生成一个cats集合,里面有name这个属性,并且是String类型的
 const Cat = mongoose.model('Cat', { name: String });
for(let i = 0; i < 100; i++) {
    //  实例化一个Cat
    const kitty = new Cat({ name: '喵喵' + i });
    // 持久化保存
    kitty.save().then(() => console.log('meow'));
}

打开终端进行查看:
在这里插入图片描述
全程完全跟javascript语法类似。非常灵活,改起来没有那么多条条框框。


接下来我们再在根目录下创建db2.js来练习下集合结构,代码如下:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, 	useUnifiedTopology: true});

var userSchema = new Schema({
    name: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    }
});

// 模型构造函数
const User = mongoose.model('User', userSchema);

  • 在这个js文件中,我们新增了Schema,那这个就是去设置这个集合的架构,例如namepassword字段是String类型的且是必须的,最后我们发布这个模型构造函数,ModelUser,但是MongoDB会自动生成users集合,大写变小写,单数变复数的形式生成集合。再开一个终端命令,输入命令mongod进行连接数据库。如下所示成功:
    在这里插入图片描述

    接下来我们在这个基础上进行增删改查:
    - 增:
    (在原有代码的基础上增加如下代码)

    // 创造实例
    const user = new User({
    name: 'Counterrr',
    password: 'mongodb'
    })
    // 存储实例
    user.save().then((data) => {
    	console.log('存储成功')
    	console.log(data)
    }, () => {
    	console.log('存储失败')
    })
    

    接着命令行输入node db2.js
    在这里插入图片描述
    我们可以看到成功的返回参数就是当前这个数据。
    - 查:
    我们注释掉增的代码,然后在原有基础上增加如下代码:

    	// 查询所有
    User.find((err, res) => {
    if (err) {
        console.log('查询失败')
    }
    else {
        console.log('查询成功')
        console.log(res)
    }
    })
    

    重新运行node db2.js
    在这里插入图片描述
    可以看到查询成功。也可以根据条件进行查询,我们再插入一条数据:

    	// 创造实例
    const user = new User({
    name: '小红',
    password: 'mongodb'
    })
    // 存储实例
    user.save().then((data) => {
    console.log('存储成功')
    console.log(data)
    }, () => {
    console.log('存储失败')
    })
    

    可以看到我们又插入一条数据,接着我们注释掉上面存储小红的这段代码,然后我们需要查出名字叫小红的这条数据,条件查询如下:

    // 查询小红
    User.find({
     name: '小红'
    }, (err, res) => {
    if (err) {
        console.log('查询失败')
    	}
    else {
        console.log('查询成功')
        console.log(res)
     }
    })
    

    重新运行node db2.js,效果如下:
    在这里插入图片描述
    可以看到我们跟了一个条件{name: '小红'},这样的话叫小红的都会被查询出来。
    - 删除:
    我们注释掉查询的代码,输入删除的代码:

    User.deleteOne({
    name: '小红'
    }).then((data) => {
    console.log('删除成功')
    console.log(data)
    }, (err) => {
    console.log('删除失败')
    console.log(err)
    })
    

    查看效果:
    在这里插入图片描述
    可以看见提示我们删除成功。
    - 更新:
    注释删除代码,输入如下更新代码:

    User.updateOne({
    	name: 'Counterrr'
    }, {name: 'Counter'}).then((data) => {
    	console.log('更新成功')
    	console.log(data)
    }, (err) => {
     	console.log('更新失败')
     	console.log(err)
    })
    

    我们把nameCounterrr更新为Counterrr,如图:
    在这里插入图片描述
    再去查询:
    在这里插入图片描述
    已经被更改了。
    MongoDB更多增删改查接口点击查看
    好的后面我们将用MongoDB来重新重构下我们之前写的学生系统。加深印象。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值