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('实例方法')
      }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值