Mongoose索引、内置方法、静态方法与实例方法

2020-11-26 12:32:42 浏览数 (2)

1. Mongoose 索引

索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快,MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧。

Mongoose 中除了以前创建索引的方式,也可以在定义 Schema 的时候指定创建索引。

代码语言:javascript复制
// 定义schema时添加索引
var UserSchema=mongoose.Schema({
    name:{
        type:String,
        // 普通索引
        index:true     
    },
    sn:{
        type:String,
        // 唯一索引
        unique:true
    },
    age:Number,       
    status:{
        type:Number,
        default:1
    }
})

2. Mongoose 的内置方法

https://mongoosejs.com/docs/queries.html

1. Model.find()

2. Model.findById()

3. Model.findByIdAndDelete()

4. Model.findByIdAndRemove()

6. Model.findByIdAndUpdate()

7. Model.findOne()

8. Model.findOneAndDelete()

9. Model.findOneAndRemove()

10. Model.findOneAndUpdate()

11. Model.updateMany()

12. Model.updateOne()

13. Model.deleteMany()

14. Model.deleteOne()

15. Model.replaceOne()

3. Mongoose 的静态方法与实例方法

为 schema 添加静态方法时通过statics关键字添加,添加实例方法通过methods 关键字添加。

代码语言:javascript复制
// 引入自定义的连接数据库文件
var mongoose=require('./db.js');
// 定义schema时添加索引
var UserSchema=mongoose.Schema({
    name:{
        type:String,
        // 普通索引
        index:true     
    },
    sn:{
        type:String,
        // 唯一索引
        unique:true
    },
    age:Number,       
    status:{
        type:Number,
        default:1
    }
})
// 添加一个按 sn 查找数据的静态方法 
UserSchema.statics.findBySn=function(sn,cb){  
    // this 指向当前的 model
    this.find({"sn":sn},function(err,docs){
        cb(err,docs)
    })   
}
// 实例方法 (基本没啥用)
UserSchema.methods.print=function(){
    console.log(this.name)
}

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

页面使用时

代码语言:javascript复制
// 引入定义模型文件
var UserModel=require('./model/user.js');
UserModel.findBySn('123456',function(err,docs){
    if(err){
        console.log(err);
        return;
    }
    console.log(docs);
    // 按sn所查找到的数据
});

var user = new UserModel({
    name: '赵六',
    sn:'12345678',
    age: 29
});

user.print();  
// 赵六

0 人点赞