你还只会MySql?MongoDB你掌握了吗

MongoDB

1.数据库

  • 数据库(database),可以看作是一个存放数据的仓库
  • 我们的程序都是在内存中运行的,一旦遇到程序运行结束、重启等情况,程序运行的数据都会丢失。因此,我们需要将一些程序中要用到的数据持久化到硬盘中去,所以就出现了数据库这样的工具。

1.1数据库的类型

  • 关系型数据库:MySQL、Oracle
  • 非关系型数据库(NoSQL):MongoDB

1.2数据库结构

image-20211129160317962

2.操作MongoDB

  • 命令行工具去操作
  • 可视化图形工具去操作
  • Nodejs中去操作

2.1命令行工具去操作 MongoDB

打开 MongoDB 安装目录中的 mongo.exe 文件:

image-20201202162056839

image-20201202162153760

2.1.1常用命令
  1. 查看所有数据库(无法查看空的数据库)

    show dbs
    
  2. 查看当前数据库

    db
    
  3. 切换/新建数据库

    # use 数据库名称
    use xmz01
    
  4. 查看数据库中所有集合

    show collections
    
  5. 往集合中添加数据(若该集合不存在,则自动创建)

    # db.集合名称.insert({添加的数据})
    
    db.students.insert({name:'张三',age:'20',gender:'男'})
    
  6. 查看集合中所有的数据

    # db.集合名称.find()
    db.students.find().pretty()
    

2.2可视化图形工具去操作

  • 使用navicat

2.3Nodejs中去操作MongoDB

  • mongoose是Nodejs中提供的一个用于便捷操作MongoDB的工具

  • 下载:

    npm i mongoose
    
2.3.1连接数据库

将express后端项目与mongodb服务器中的数据库连接起来

//通过mongoose去连接MongoDB
const mongoose = require('mongoose');
//设置要连接的MongoDB服务器地址(xmz01:要连接的数据库名称)
const dbURL='mongodb://localhost:27017/xmz01';
//连接数据库
mongosse.connect(dbURI,{useNewUrlParser:true,useUnifiedTopology:true});
mongoose.connection.on('connected',()=>console.log(dbURL+'数据库连接成功'));

注:xmz01是当前连接的数据库的名称,以后在其他项目中,可以根据实际情况进行更改

2.3.2配置集合

当数据库连接成功之后,就可以开始去操作数据库的集合了。但是在首次操作之前,必须先对要操作的集合进行相关的配置

  1. 配置集合结构:定义出集合中数据有那些属性,每一个属性的值是什么数据类型

    //数据库集合的相关配置
    //1.定义数据集合的结构:定义出集合中数据有那些属性,属性的值是什么类型
    const {Schema} = require('mongoose');
    const usersSchema = new Schema({
        username:String,
        password:String
    });
    
  2. 配置集合模型:

    • 将上一步中的schema集合结构和数据库中的集合关联起来,得到一个数据模型。
    • 所有关于数据集合操作的方法,都是数据模型提供的
    const {model} = require('mongoose');
    
    //2.定义数据集合的模型:将Schema和数据库中的集合关联起来
    // model('模型名称',Schema变量名称,'数据库中的集合名称');
    const userModel = model('usersModel',usersSchema,'users');
    
2.3.3操作数据
  • 查询、查找

    • 按条件查询:

      usersModel.find({username:'张三'})
      
    • 查询所有数据:

      usersModel.find()
      
  • 新增

    • usersModel.create({username:'123',password:'123'})
      
  • 删除

    • usersModel.deleteOne({username:'zhangsan'});
      usersModel.deleteMany({username:'zhangsan'});
      
  • 修改

    • usersModel.updateOne({_id:1},{username:'lisi',password:'123'});
      

    注:以上所有的方法都是异步方法,且这些方法的返回值都是Promise对象,因此需要通过await去等待结果。

    举例:

    router.post('/login',async function(req,res,next){
        //接受到前端发送的用户数据
        const user=req.body;
        const result=await usersModel.find({username:'123'});
    
    
        
        
    });
    
  1. 新增:

    模型.create({})
    
  2. 查询所有

    模型.find()
    
  3. 按条件查询

    模型.find({查询条件})
    
  4. 删除

    模型.deleteOne({删除条件})
    
  5. 修改

    模型.updateOne({查询条件},{修改数据})
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值