一、Mongoose索引
索引是对数据库表中一列或多列的值进行排序的一种结构。可以让我们查询数据库变得更快。MongoDB的索引几乎和传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧。
我们可以在Schema中指定创建索引
var DeviceSchema = new mongoose.Schema({sn:{type:Number,//唯一索引unique:true},name:{type:String,//普通索引index:true}})
二、静态方法
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()
扩展静态方法增加 findBySn 方法
//通过statics扩展UserSchema.statics.findBySn = function(sn){/* this指当前的model */return this.find({"sn":sn})}
1.在model/user.js中定义
var mongoose = require('./db');var UserSchema = new mongoose.Schema({name:{type: String,index:true},sn:{type: Number,unique:true},age:Number,status:{type: Number,default:1}})UserSchema.statics.findBySn = function(sn){/* this指当前的model */return this.find({"sn":sn})}var User = mongoose.model('User',UserSchema,'user');module.exports = User;
2.在app.js中直接使用
const UserModel = require('./model/user');UserModel.findBySn(32324242).then(data=>{console.log(data)})
三、实例方法
//model/user.jsvar mongoose = require('./db');var UserSchema = new mongoose.Schema({name:{type: String,index:true},age:Number})/* 扩展实例方法 */UserSchema.methods.print = function(){console.log('实例方法')console.log(this.name)}var User = mongoose.model('User',UserSchema,'user');module.exports = User;
//app.jsconst UserModel = require('./model/user');var user = new UserModel({name:"陈超",age:6})user.print();
