mongodb之索引index

数据库中,根据一个字段的值,来寻找一个文档,是很常见的操作。比如根据学号来找一个学生。

这个学号,是唯一的,只要有学号,就能唯一确认一个学生的文档。学号这个属性,就非常适合建立索引,这样一来,查找学生就变得简单了。

这个语句,能够查看检索的过程:

1           db.student.find({"name":"user888"});

学生的姓名是唯一的,为了快速的进行检索,所以就把name属性建立成为“索引”。

1           db.student.createIndex({"name":1});

这样,今后通过name寻找student文档的时候,速度非常快。因为能够快速的从索引表中,找到这个文档。

缺点就是插入每条数据的时候,时间变慢了,效率低了。但是换回来的就是寻找的速度快了。

索引这个属性,所有的文档都不能相同:

1           db.members.createIndex( {   "user_id": 1 }, { unique: true }   );


nodejs如何创建唯一和非唯一的索引呢

本次采用箭头函数创建

创建唯一索引

//初始化一个索引
//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即可!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Kevin-ZhangCG

MySQL数据库实用技巧

培养兴趣   兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率。当然学习MySQL 5.6也不例外。 夯实基础   计算机领域的技术非常强调基础...

1881
来自专栏破晓之歌

Mysql入门 原

982
来自专栏乐沙弥的世界

MongoDB 单键(列)索引

994
来自专栏python成长之路

(细节)My SQL中主键为0和主键自排约束的关系

1894
来自专栏闻道于事

PL/SQL 编程(三 )程序包和包体,触发器,视图,索引

一、程序包和包体 程序包(package):存储在数据库中的一组子程序、变量定义。在包中的子程序可以被其它程序包或子程序调用。但如果声明的是局部子程序,则只能在...

3297
来自专栏跟着阿笨一起玩NET

sql server递归查询

-----------------------------------------------

7802
来自专栏JetpropelledSnake

SQL学习之MYSQL的常用命令和增删改查语句和数据类型

1876
来自专栏一枝花算不算浪漫

[Java面试十二]数据库概念相关

37611
来自专栏DeveWork

WordPress主题下funtions.php的一段“恶意”代码

不多说了,相信有很多WordPresser都知道这段在WordPress主题下fountions.php的“恶意”代码,之所以为“恶意”加个双引号是想说:其实也...

31610
来自专栏difcareer的技术笔记

C代码 从源代码到可执行文件——编译全过程解析

程序的生命周期从一个高级C语言程序开始,这种形式能够被人读懂,却不能被机器读懂,为了在系统上运行这个程序,该源程序需要被其他程序转化为一系列低级机器语言指令,然...

5485

扫码关注云+社区

领取腾讯云代金券