一、Mongoose索引

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

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

  1. var mongoose = require('mongoose')
  2. var UserSchema = mongoose.Schema({
  3. name: String,
  4. sn: {
  5. type: String,
  6. index: true // 将sn作为索引
  7. },
  8. age: Number,
  9. status: {
  10. type: Number,
  11. default: 1
  12. }
  13. })
  14. module.exports = mongoose.model('Users', UserSchema, 'users')

二、Mongoose内置CURD

mongoosejs.com/docs/querie…

  • 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.updateOne()
  • Model.updateMany()

    三、自定义封装静态方法

    ```javascript / model中的user.js / // 静态方法 UserSchema.statics.findBySn = function(sn, cb) { // 通过find方法获取sn的数据,this关键字获取当前的model this.find({‘sn’:sn}, (err, docs) => {
    1. cb(err, docs)
    }) }

/ 根目录下的user.js / UserModel.findBySn(‘123456781’, (err, docs) => { if (err) return console.log(err) console.log(docs) })

  1. <a name="b9uVf"></a>
  2. ### 四、自定义封装实例方法
  3. ```javascript
  4. /* model中的user.js */
  5. // 实例方法(基本不用)
  6. UserSchema.methods.printA = function () {
  7. console.log('我是一个实例方法')
  8. console.log(this.name)
  9. }
  10. /* 根目录下的user.js */
  11. /var user = new UserModel({
  12. name: 'ww',
  13. sn: '123456782',
  14. age: 18
  15. })
  16. user.printA() // 自定义的实例方法