索引基础
创建索引:
db.user.ensureIndex({"name":1});
获取当前集合的索引:
db.user.getIndexes();
删除索引:
db.user.dropIndex({"name":1});
复合索引(数字1代表索引按升序存储,-1表示索引按照降序方式存储):
db.user.ensureIndex({"name":1,"age":-1});
tips:这里符合索引类似mysql最左匹配原则
注意点:
随着集合的增长, 需要针对查询中大量的排序做索引。 如果没有对索引的键调用 sort,MongoDB 需要将所有数据提取到内存并排序。 因此在做无索引排序时, 如果数据量过大以致无法在内存中进行排序, 此时 MongoDB 将会报错。
唯一索引
创建唯一索引:
db.user.ensureIndex({"userid":1},{"unique":true});
索引参数
Parameter | Type | Description |
---|---|---|
background | Boolean | 建索引过程中会阻碍其它数据库操作,background可指定以后台方式创建索引,即增加“background”可选参数。“bcakground”默认值为false。 |
unique | Boolean | 建立的索引是否唯一。指定为true创建唯一索引。默认值为false。 |
name | String | 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。 |
dropDups | Boolean | 在建立唯一索引时是否删除重复记录,指定true创建唯一索引。默认值为false。 |
使用explain
db.user.find({"name":"zhangsan"}).explain();
explain executionStats查询具体的执行时间
db.user.find().explain("executionStats");
查看数值:explain.executionStats.executionTimeMillis
账号权限
一、创建超级管理员
use admin;
db.createUser({
user:'admin',
pwd:'123456',
roles:[{role:'root',db:'admin'}]
});
二、修改Mongodb数据库配置文件
路径:../../mongod.cfg
配置
security:
authorization: enabled
三、重启Mongodb服务
四、使用账号连接数据库
mongo admin -u 用户名 -p 密码
mongo 192.168.1.1:27017/test -u user -p password
连接数据库的时候需要配置账户密码
url = 'mongodb://admin:123456@localhost:27017/';