Mongoose 索引
一、Mongoose 索引
索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更 快。MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询 优化技巧。
mongoose 中除了以前创建索引的方式,我们也可以在定义 Schema 的时候指定创建索引。
var DeviceSchema = new mongoose.Schema({ sn: { type: Number, // 唯一索引 unique: true }, name: { type: String, // 普通索引 index: true } });
二、Mongoose 内置 CURD
https://mongoosejs.com/docs/queries.html
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()
三、扩展 Mongoose CURD 方法
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');
demo
user.js
var mongoose=require('./db.js'); var UserSchema=mongoose.Schema({ name:{ type:String }, sn:{ type:String, index:true }, age:Number, status:{ type:Number, default:1 } }) //静态方法 UserSchema.statics.findBySn=function(sn,cb){ //通过 find方法获取 sn的数据 this 关键字获取当前的model this.find({"sn":sn},function(err,docs){ cb(err,docs) }) } // 实例方法 (基本不用) UserSchema.methods.print=function(){ console.log('我是一个实例方法') console.log(this.name) } module.exports=mongoose.model('User',UserSchema,'user');
使用:
var UserModel = require('./model/user.js'); // var user = new UserModel({ // name: '赵六', // sn:'123456781', // age: 29 // }); // user.save(); // UserModel.findBySn('123456781',function(){}) UserModel.findBySn('123456782', function (err, docs) { if (err) { console.log(err); return; } console.log(docs) }) var user = new UserModel({ name: '赵六', sn: '123456781', age: 29 }); // user.save(); user.print();//自定义的实例方法
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!