80530895 2019-06-29
索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更
快。MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询
优化技巧
user.js
var mongoose = require('./db.js'); var UserSchema = mongoose.Schema({ name:String, sn:{ type:String, }, age:Number, status:{ type:Number, default:1 } }) //定义model操作数据库 // var UserModel = mongoose.model('User',UserSchema); //将生成users表 var UserModel = mongoose.model('User',UserSchema,'user'); module.exports = UserModel
db.user.getIndexes()
sn:{ type:String, index:true },
user.js
var mongoose = require('./db.js'); var UserSchema = mongoose.Schema({ name:String, sn:{ type:String, index:true }, age:Number, status:{ type:Number, default:1 } }) //定义model操作数据库 // var UserModel = mongoose.model('User',UserSchema); //将生成users表 var UserModel = mongoose.model('User',UserSchema,'user'); module.exports = UserModel
查找索引
user.js
增加UserSchema.statics.findBySn
var mongoose = require('./db.js'); var UserSchema = mongoose.Schema({ name:String, sn:{ type:String, index:true }, age:Number, status:{ type:Number, default:1 } }) UserSchema.statics.findBySn=function(sn,cb){ this.find({"sn":sn},function(err,docs){ cb(err,docs) }) } //定义model操作数据库 // var UserModel = mongoose.model('User',UserSchema); //将生成users表 var UserModel = mongoose.model('User',UserSchema,'user'); module.exports = UserModel
index.js
先增加sn=123456
的数据
var user = new UserModel({ name:'标题3', age:20, sn:"123456" }) user.save(function(err,doc){ if(err){ console.log(err); return; } console.log(doc) })
使用UserSchema.statics.findBySn
方法
var UserModel = require('./user.js'); //静态方法 UserModel.findBySn('123456', function (err, doc) { if (err) { console.log(err); return; } console.log(doc) })
运行