数据库中,根据一个字段的值,来寻找一个文档,是很常见的操作。比如根据学号来找一个学生。
这个学号,是唯一的,只要有学号,就能唯一确认一个学生的文档。学号这个属性,就非常适合建立索引,这样一来,查找学生就变得简单了。
这个语句,能够查看检索的过程:
1 db.student.find({"name":"user888"}); |
---|
学生的姓名是唯一的,为了快速的进行检索,所以就把name属性建立成为“索引”。
1 db.student.createIndex({"name":1}); |
---|
这样,今后通过name寻找student文档的时候,速度非常快。因为能够快速的从索引表中,找到这个文档。
缺点就是插入每条数据的时候,时间变慢了,效率低了。但是换回来的就是寻找的速度快了。
索引这个属性,所有的文档都不能相同:
1 db.members.createIndex( { "user_id": 1 }, { unique: true } ); |
---|
//初始化一个索引
//ES6箭头函数初始化一个创建索引
let init=()=>{
_connectDB((err,client)=>{
if(err){
console.log(err)
return;
}
let db=client.db(client.s.options.dbName);
db.collection('user').createIndex({"username":1},{unique:true},(err,result)=>{
if(err){
console.log(err);
return;
}
console.log("索引创建完毕!")
})
})
}
init()
//初始化一个索引
//ES6箭头函数初始化一个创建索引
let init=()=>{
_connectDB((err,client)=>{
if(err){
console.log(err)
return;
}
let db=client.db(client.s.options.dbName);
db.collection('user').createIndex({"username":1},null,(err,result)=>{
if(err){
console.log(err);
return;
}
console.log("索引创建完毕!")
})
})
}
init()
可以简单看出{unique:true}表明创建唯一索引,创建非唯一索引时候将这个替换为null即可!