索引
索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更
快。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
查找user表的索引
db.user.getIndexes()
增加字段sn的索引
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
查找索引
扩展Mongoose Model的静态方法
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)})
运行