6.mongoose索引,内置、扩展curd

一、mongoose 索引

完整例子

const mongoose = require('./db');

const UserSchema = mongoose.Schema({
    name: String,
    age: Number,
    sn: {
        type: String,
        index: true
    }
})

module.exports = mongoose.model('User', UserSchema, 'users_suoyin')

查询集合中的所有索引

$ db.users_suoyin.getIndexes()

二、Mongoose 内置 CURD

  • Model.deleteMany()

 Model.deleteOne()

 Model.find()

 Model.findById()

 Model.findByIdAndDelete()

 Model.findByIdAndRemove()

 Model.findByIdAndUpdate()

 Model.findOne()

 Model.findOneAndDelete()

 Model.findOneAndRemove()

 Model.findOneAndUpdate()

 Model.replaceOne()

 Model.updateMany()

 Model.updateOne()

三、扩展mongoose curd方法

在schema中添加静态方法和实例方法

路径:model/user.js

const mongoose = require('./db');

const UserSchema = mongoose.Schema({
    name: String,
    age: Number,
    sn: {
        type: String,
        index: true
    }
})

// 扩展curd
// 方法1:静态方法
UserSchema.statics.findBySn = function (sn, cb) {
    // 通过find获取sn数据,this获取当前的model
    this.find({'sn': sn}, function(err, doc) {
        cb(err, doc)
    })
}

// 方法2:实例方法(基本不哟空)
UserSchema.methods.print = function() {
    console.log('我是实例方法');
    console.log('this',this);
    // this指向new UserModel, this.name = suoyin, 不常用
}

module.exports = mongoose.model('User', UserSchema, 'users_suoyin')

使用扩展方法

const UserModel = require('../model/user.js')

// 调用静态方法
UserModel.findBySn('1-2', (err, doc) => {
    if(err){ console.log('err', err); return }
    console.log('doc: ', doc);
})

// 调用实例方法
const user = new UserModel({
    name: 'suoyin',
    age: 20,
    sn: '1-3'
})

user.print()

总结

实例的this指向new UserModel, this.name = suoyin, 不常用。常用的是静态方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值