mongoose操作数据库

mongoose操作数据库

mongoose

  1. Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,Mongoose将数据库 中的数据转换为JavaScript对象以供你在应用中使用。

  2. mongodb这个数据的操作肯定不止一种形式,mongoose只是其中一种

mongoose操作流程

  1. 安装mongoose
    $ cnpm i mongoose -D
  2. 连接数据库
  var mongoose = require( 'mongoose )
  //mongoose.connect(连接地址/数据库名称)
  mongoose.connect( 'mongodb://127.0.0.1:27017/students' )
  1. Schema定义

    • 它可以理解为数据库模型骨架,可以看作工厂中模具一样,好比一个茶杯,喝水是茶杯最终的功能,茶杯本身就像是Model,那么茶杯的批量生产是需要靠工厂的模具成型的。Schema不仅定义了文档结构和使用性能,还可以有扩展插件、实例方法、静态方法、复合索引、文档生命周期钩子。

    • Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力

    • Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对

    • Entity(实体) : 由Model创建的实体,他的操作也会影响数据库

    • 存储数据步骤:定义Schema (骨架) > 创建model(模型)> Entity实例化方法。

      // 1. 定义Schema
        // var studentsSchema = new mongoose.Schema( options ) //options是用来定义存储数据的数据类型
        var studentsSchema = new mongoose.Schema( {
          // 数据: 数据类型
          id: Number,
          name: String,
          age: Number
        }) 
    
      // 2. 定义模型
    
        // var studentsModel = mongoose.model( 集合名称,骨架 )
        var studentsModel = mongoose.model( 'students', studentsSchema )
    
      // 3. 定义实体
        var students = new studentsModel()
    
  2. 增删改查

    1. 增加:
    //通过模式studentSchema  创建一个模型studentModel 
     var studentModel = mongoose.model("students",studentSchema  );
    
     var instance1 = new studentModel (); 
     instance1.name="tangyan";
     instance1.age="18";
     //通过save方法保存
     instance1.save(function(err){
         if (err) {
           console.log('保存失败');  
           return;
         }
     });
    
    1. 查询:
      通过find进行查找,第一个参数 {} 为空表示查询所有的数据
      studentModel.find( {}, (error , result)=>{
         if( error ) throw error
          console.log(result)// reuslt 查询结果
          //console.log( result[0]._id ) //查出 _id  也可通过遍历取得id
       })
    
    1. 删除:

      • 删除数据首先要知道删除哪一条信息,需要知道信息的id.
      • 把对应id的数据查询出来,可以通过findById找到这条id的数据,然后执行remove方法
              studentModel.find( {}, (error , result)=>{
                  if( error ) throw error
                  var id = ( result[0]._id ) //查询找到 _id
      
                  studentModel.findById( id,( error,data ) => {
                      if( error ) throw error
                      //删除
                      data.remove( () => {
                          console.log('删除成功')
                      })
                  })
              })
      
    2. 修改:

      • 修改数据的思路:先把对应id的数据查询出来。
      • 对需要修改的字段重新赋值,然后执行save方法保存。
          studentModel.find( {}, ( error , result) => {
         if(error) throw error  
         const id = result[0]._id  //取到第一项的id
         studentModel.findById( id , ( error , data) => {
             if( error ) throw error
           data.age = 22 //赋值改变
           data.save()   //保存
         })
       })
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值