一、Mongoose索引

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

  1. var DeviceSchema = new mongoose.Schema({
  2. sn:{
  3. type:Number,
  4. //唯一索引
  5. unique:true
  6. },
  7. name:{
  8. type:String,
  9. //普通索引
  10. index:true
  11. }
  12. })

二、静态方法

  1. Model.deleteMany()
  2. Model.deleteOne()
  3. Model.find()
  4. Model.findById()
  5. Model.findByIdAndDelete()
  6. Model.findByIdAndRemove()
  7. Model.findByIdAndUpdate()
  8. Model.findOne()
  9. Model.findOneAndDelete()
  10. Model.findOneAndRemove()
  11. Model.findOneAndUpdate()
  12. Model.replaceOne()
  13. Model.updateMany()
  14. Model.updateOne()

扩展静态方法增加 findBySn 方法

  1. //通过statics扩展
  2. UserSchema.statics.findBySn = function(sn){
  3. /* this指当前的model */
  4. return this.find({"sn":sn})
  5. }

1.在model/user.js中定义

  1. var mongoose = require('./db');
  2. var UserSchema = new mongoose.Schema({
  3. name:{
  4. type: String,
  5. index:true
  6. },
  7. sn:{
  8. type: Number,
  9. unique:true
  10. },
  11. age:Number,
  12. status:{
  13. type: Number,
  14. default:1
  15. }
  16. })
  17. UserSchema.statics.findBySn = function(sn){
  18. /* this指当前的model */
  19. return this.find({"sn":sn})
  20. }
  21. var User = mongoose.model('User',UserSchema,'user');
  22. module.exports = User;

2.在app.js中直接使用

  1. const UserModel = require('./model/user');
  2. UserModel.findBySn(32324242).then(data=>{
  3. console.log(data)
  4. })

三、实例方法

  1. //model/user.js
  2. var mongoose = require('./db');
  3. var UserSchema = new mongoose.Schema({
  4. name:{
  5. type: String,
  6. index:true
  7. },
  8. age:Number
  9. })
  10. /* 扩展实例方法 */
  11. UserSchema.methods.print = function(){
  12. console.log('实例方法')
  13. console.log(this.name)
  14. }
  15. var User = mongoose.model('User',UserSchema,'user');
  16. module.exports = User;
  1. //app.js
  2. const UserModel = require('./model/user');
  3. var user = new UserModel({
  4. name:"陈超",
  5. age:6
  6. })
  7. user.print();