MongoDB-mongoose索引、内置CRUD方法扩展

mongoose索引,mongoose内置CRUD方法、扩展mongoose model的静态方法和实例方法

  • 索引
    • 索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快。MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧
    • mongoose中可以在定义Schema的时候创建索引
    const SetSchema = mongoose.Schema({
          
          
        name: {
          
          
            type: String,
            // 去除name字段首尾空格
            trim: true,
            // 增加数据的时候对 name 字段进行处理
            set(params) {
          
          
                // params 可以获取 name 的值 返回的数据就是 name 在数据库实际保存的值
                if (!params) {
          
          
                    return params
                }
                if (params.indexOf('http://') !== 0 && params.indexOf('https://') !== 0) {
          
          
                    return `http://${
            
            params}`
                }
                return params
            },
            // 唯一索引
            unique: true,
            // 普通索引
            index: true
    
        },
        age: Number,
        status: {
          
          
            type: Number,
            default: 1,
        },
    })
    
    
  • mongoose内置CRUD
    • Model.deleteMany()
    • Model.deleteOne()
    • Model.find()
    • Model.findById()
    • Model.findByIdAndDelete()
    • Model.findByIdAndRemove()
    • Model.findByIdAndUpdate()
    • Model.findOne()
    • Model.findOneAndDelete()
    • Model.findOneAndRemove()
    • Model.findOneAndReplace()
    • Model.findOneAndUpdate()
    • Model.replaceOne()
    • Model.updateMany()
    • Model.updateOne()
  • 扩展mongoose内置方法
    • 静态方法

      let IndexSchema = mongoose.Schema({
              
              
          sn: {
              
              
              type: String,
              index: true,
          },
      })
      // 静态方法
      IndexSchema.statics.findBySn = function (sn, cb) {
              
              
          // 通过 find 方法获取sn数据
          // this 指向model  当调用对象里的函数时,this指向这个对象
          this.find({
              
              'sn': sn}, (err, doc) => {
              
              
              cb(err, doc)
          })
      }
      
    • 实例方法(基本不用)

      IndexSchema.methods.print = function() {
              
              
          // this 指向实例传入的数据
          console.log(this)
          console.log('实例方法')
      }
      

猜你喜欢

转载自blog.csdn.net/it_xcr/article/details/112647269