08- Mongoose索引、Mongoose内置方法、扩展Mongoose Model的静态方法和实例方法

1,066 阅读1分钟

1、Mongoose索引

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

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

var DeviceSchema = new mongoose.Schema({
    sn: {
        type: Number,
        //唯一索引
        unique: true
    },
    name: {
        type: String,
        //普通索引
        index: true
    }
});

2、Mongoose内置方法

  • 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()

文档:mongoosejs.com/docs/querie…

3、扩展Mongoose Model的静态方法和实例方法

var mongoose = require('./db.js');
var UserSchema = mongoose.Schema({
    name: {
        type: String
    },
    age: Number,

    status: {
        type: Number,
    default:
        1
    }
})
//静态方法
UserSchema.statics.findByUid = function(uid, cb) {
    this.find({
        "_id": uid
    },
    function(err, docs) {
        cb(err, docs)
    })
}
//实例方法
UserSchema.methods.print = function() {
    console.log('这是一个实例方法,实例对象可以使用');
    console.log(this); // 代表当前实例对象
};
module.exports = mongoose.model('User', UserSchema, 'user');