一、安装
- mongodb介绍
- 下载链接:https://www.mongodb.com/try/download/community
下载之后文件:
直接默认安装
二、使用mongodb
1、进入mongodb打开cmd输入:mongo --host localhost --port 27017
2、创建逻辑库:use school(存在即切换,不存在即创建)
3、显示当前mongodb有多少逻辑库: show dbs
4、创建数据表并将信息存储的到信息表: db.student.save({name:“Soct”,sex:“male”,age:25,city:“Beijing”})
5、查看刚刚创建的内容:db.student.find()
6、创建用户权限:
创建一个具有root权限且属于admin逻辑库的admin用户
7、开启登录验证功能
即便创建了用户,但是mongodb默认没有开启登录验证功能,所以需要开启这个功能
创建mongdb配置文件,congodb.cnf
- 新建文档命名:congodb.cnf,将以下内容复制到文档中,dbpath是data的路径,logpath是
mongod.log的路径, auth=true 表示登录需要验证
dbpath=C:\Program Files\MongoDB\Server\5.0\data logpath=C:\Program Files\MongoDB\Server\5.0\log\mongod.log auth=true
congodb.cnf存放位置:
重新安装MongoDB服务
为了让MongoDB服务加载mongo.cnf文件,需要重新安装MongoDB服务。所以需要以管理员身份打开c命令行窗口,执行下面的命令
mongod
--config "C:\Program Files\MongoDB\Server\5.0\mongo.cnf"
--reinstall
重启服务
重新登录:
使用robot3t客户端登录
三、mongodb的使用
- 管理逻辑库(逻辑库中要有数据表)
创建/切换逻辑库
use test
查看逻辑库
show dbs
删除逻辑库(删除当前使用逻辑库下的集群)
db.dropDatabase()
- 集合管理(集合就类似于数据库表)
创建集合
db.createCollection("student")
查看集合
show collections
删除集合
db.student.drop()
查看集合记录数量
db.student.count()
查看数据看见容量
db.student.dataSize()
重命名集合
db.student.renameCollection("stu")
添加记录
集合的save函数允许我们添加一条或者多条记录
db.student.save([
{name:"李强",sex:"男",age:24},
{name:"丁朱",sex:"女",age:18}
])
主键值
在集合中,文档之间都是松散,没有统一的字段约束。为了标识文档的唯一性,MongoDB为每个文档都添加了主键字段(_id)obectIDd时一个12字节的BSON类型字符串
时间戳
MongoDB存储日期会自动转换成格林尼治时区,中国时区是东八区比格林尼治时区晚了8小时,当我们从主机里面提取时间戳会比本地时间早了8个小时。(需要将格林尼治时间转换为中国时间,要使用程序,比较麻烦。)
查询记录
db.student.find();
db.student.find({name:“dzz”,age:“25”})
db.student.find({name:“dzz”,age:{$gte:20}})
db.stundent.findOne()
mongodb中比较级查询条件:($lt $lte $gt $gte)(大于、小于)、查找条件
MongoDB表达式必须写成JSON格式
序号 | 表达式 | 意义 |
---|---|---|
1 | $lt | 小于 |
2 | $gt | 大于 |
3 | $lte | 小于等于 |
4 | $gte | 大于等于 |
5 | $in | 包括 |
6 | $nin | 不包括 |
7 | $ne | 不等于 |
db.student.find({name:"dzz",age:{$gte:20,$lte:30}})
db.student.find({name:"dingqizhuzhu",age:{$gte:20,$lte:30}})
db.student.find({age:{$in:["25","24"]}})
序号 | 表达式 | 意义 |
---|---|---|
1 | $all | 全部 |
2 | $not | 全部(取反) |
3 | $or | 或关系 |
4 | $exists | 含字段 |
索引
因为MongoDB中存放了大量的数据,所以为了加快数据检索速度,需要为集合设置索引。
索引字段按照升序排列,属性值为1;降序排列属性值为-1。
因为创建索引的过程会阻塞MongoDB,影响其他增删改查操作,所以background参数代表在空闲的时候创建索引。
普通索引的创建
db.student.createIndex({name:1})
删除索引 ()里面如果添加了索引的名称则表示删除该名称的索引,否则删除所有索引
db.student.dropIndexes()
db.student.dropIndexe("name_1")
因为创建索引的过程会阻塞MongoDB,影响其他增删改查操作,所以background参数代表在空闲的时候创建索引(推荐使用该写法)
如果想要指定索引的名字,则加上name:""的参数
db.student.createIndex({name:1},{background:true})
db.student.createIndex({name:1},{background:true,name:"name"})
查看索引的内容,打印索引的列表信息
db.student.getIndexes()
唯一性索引
唯一性索引只能创建在每个记录都含有的公共字段上,在非公共字段上不能创建唯一性索引的。
[unique为true表示唯一性,key字段需要在表中所有的表信息都有该key字段,且该key字段的值唯一,才能创建成功,否则会报错。
db.student.createIndex({name:1},{background:true,unique:true,name:"name"})
创建索引的原则
■数据量很大的集合必须创建索引,相反则不需要创建索引
■ 集合的数据读取多过写入,则需要创建索引
■ 给经常被当作查询条件的字段设置索引