mongoose索引

mongoose索引

九月 11, 2018

一、设置索引

索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快。MongoDB 的索引几乎与传统的关系型数据库一模一样,在 mongoose 中可以在定义 Schema 的时候创建索引。

1
2
3
4
5
6
7
8
9
10
11
12
13
var DeviceSchema = new mongoose.Schema({

sn: {

type: Number,
unique: true // 唯一索引
},
name: {

type: String,
index: true // 普通索引
}
})

二、CURD

CURD代表创建(Create)、更新(Update)、读取(Retrive)和删除(Delete)操作,mongoose 中内置的 CURD 有如下这些:
https://mongoosejs.com/docs/queries.html
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()

除了这些内置的 CURD 之外,我们还可以对其进行扩展。扩展分为静态方法与实例方法,实例方法一般不用,这里展示静态方法的封装:

1
2
3
4
5
6
UserSchema.statics.findBySn=function(sn,callback){
//通过 find 方法获取 sn 的数据,this 指向当前的model
this.find({"sn":sn},function(err,docs){
callback(err,docs)
})
}

外部调用 findBySn

1
2
3
4
5
6
7
8
UserModel.findBySn('12345678',function(err,docs){

if(err){
console.log(err);
return;
}
console.log(docs)
})