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

本文介绍了Mongoose中索引的创建方式,包括在Schema定义时添加普通索引和唯一索引,以及Mongoose提供的多种内置查询方法,如find、findById、update等,还展示了如何通过statics和methods关键字为Schema添加静态方法和实例方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Mongoose 索引

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

Mongoose 中除了以前创建索引的方式,也可以在定义 Schema 的时候指定创建索引。
// 定义schema时添加索引
var UserSchema=mongoose.Schema({
    name:{
        type:String,
        // 普通索引
        index:true     
    },
    sn:{
        type:String,
        // 唯一索引
        unique:true
    },
    age:Number,       
    status:{
        type:Number,
        default:1
    }
})

2. Mongoose 的内置方法

Mongoose v6.3.4: Queries

1. Model.find()

2. Model.findById()

3. Model.findByIdAndDelete()

4. Model.findByIdAndRemove()

5. Model.findByIdAndUpdate()

6. Model.findOne()

7. Model.findOneAndDelete()

8. Model.findOneAndRemove()

9. Model.findOneAndUpdate()

10. Model.updateMany()

11. Model.updateOne()

12. Model.deleteMany()

13. Model.deleteOne()

14. Model.replaceOne()

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

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

// 引入自定义的连接数据库文件
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');

页面使用时

// 引入定义模型文件
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();  
// 赵六

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aiguangyuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值