Mongodb的介绍和安装
学习目标
- 了解 非关系型数据库的优势
- 了解 mongodb的安装
1. mongodb的介绍
1.1 什么是mongodb
- mongodb 是一个功能最丰富的NoSQL非关系数据库。由 C++ 语言编写。
- mongodb 本身提供S端存储数据,即server;也提供C端操作处理(如查询等)数据,即client。
1.2 SQL和NoSQL的主要区别
- 在SQL中层级关系: 数据库>表>数据
- 而在NoSQL中则是: 数据库>集合>文档
1.2.1 数据之间无关联性
- SQL中如何需要增加外部关联数据的话,规范化做法是在原表中增加一个外键,关联外部数据表。
- NoSQL则可以把外部数据直接放到原数据集中,以提高查询效率。缺点也比较明显,对关联数据做更新时会比较麻烦。
- SQL中在一个表中的每条数据的字段是固定的。而NoSQL中的一个集合(表)中的每条文档(数据)的key(字段)可以是互不相同的。
1.2.2 拓展阅读
https://www.cnblogs.com/jeakeven/p/5402095.html
1.3 mongodb作为非关系型数据库相较于关系型数据库的优势
易扩展: NoSQL数据库种类繁多, 但是一个共同的特点都是去掉关系数据库的关系型特性。 数据之间无关系, 这样就非常容易扩展
大数据量,高性能: NoSQL数据库都具有非常高的读写性能, 尤其在大数据量下表现优秀。 这得益于它的非关系性,数据库的结构简单
灵活的数据模型: NoSQL无需事先为要存储的数据建立字段, 随时可以存储自定义的数据格式。 而在关系数据库中, 增删字段是一件非常麻烦的事情。 如果是非常大数据量的表, 增加字段简直就是一个噩梦
2. mongodb的安装
以ubuntu18.04为例
mongodb具有两种安装方式:命令安装 或 源码安装
2.1 命令安装
在ubuntu中使用apt-get工具安装
sudo apt-get install -y mongodb-org
或参考官方文档 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
2.2 源码安装
2.2.1 选择相应版本和操作系统并下载
https://www.mongodb.com/download-center/community?jmp=docs
2.2.2 解压
tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.0.3.tgz
2.2.3 移动到/usr/local/目录下
sudo mv -r mongodb-linux-x86_64-ubuntu1804-4.0.3/ /usr/local/mongodb
2.2.4 在shell的初始化脚本.bashrc中添加mongodb可执行文件到环境变量PATH中
a. 进入.bashrc文件中
cd ~
sudo vi .bashrc
b. 在.bashrc文件的最后添加:
export PATH=/usr/local/mongodb/bin:$PATH
3. mongodb的官方文档
https://docs.mongodb.com/manual/introduction/
小结
- 了解 非关系型数据库的优势
- 易扩展
- 高性能
- 灵活的数据字段
- 了解 mongodb的安装
- sudo apt-get install -y mongodb-org
mongodb的简单使用
学习目标
- 掌握 服务端的启动
- 掌握 客户端的使用
- 掌握 mongodb的数据库和集合命令
- 了解 文档中的_id字段
1. mongodb服务端的启动
- 默认端口:27017
- 默认配置文件的位置:/etc/mongod.conf
- 默认日志的位置:/var/log/mongodb/mongod.log
mongodb服务端启动分别两种方式:
- 本地测试方式的启动(只具有本地数据增删改查的功能)
- 生产环境启动(具有完整的全部功能)
1.1 测试方式启动
- 启动: sudo service mongod start (sudo service mongod start)
- 停止: sudo service mongod stop
- 重启: sudo service mongod restart
1.2 生产环境正式的启动方式
启动: sudo mongod [–auth --dbpath=dbpath --logpath=logpath --append --fork] [-–f logfile ]
- 只以 sudo mongod 命令启动时,默认将数据存放在了 /data/db 目录下,需要手动创建
- –dbpath: 指定数据库的存放路径
- –logpath: 指定日志的存放路径
- –append: 或–logappend 设置日志的写入形式为追加模式
- –fork: 或-fork 开启新的进程运行mongodb服务
- –f: 或-f 配置文件路径(可以将上述配置信息写入文件然后通过该文件中的参数进行加载启动)
- –auth: 以权限认证的方式启动,我们会在后边的课程中学习该内容
1.3 查看是否启动成功
ps aux | grep mongod
2. 启动mongodb的客户端:进入mongo shell
- 启动本地客户端: mongo
- 查看帮助:mongo –help
- 退出:exit或者ctrl+c
3. mongodb的简单使用
开启mongodb server的情况下,在进入mongo shell后,就可以做简单的使用了
3.1 mongodb数据库的命令
- 查看当前的数据库:db(没有切换数据库的情况下默认使用test数据库)
- 查看所有的数据库:show dbs /show databases
- 切换数据库:use db_name
- db_name为show dbs后返回的数据库名
- 删除当前的数据库:db.dropDatabase()
3.2 mongodb集合的命令
- 无需手动创建集合:
向不存在的集合中第一次添加数据时,集合会自动被创建出来 - 手动创建集合:
- db.createCollection(name,options)
- db.createCollection(“stu”)
- db.createCollection(“sub”, { capped : true, size : 10 } )
- 参数capped:默认值为false表示不设置上限,值为true表示设置上限
- 参数size:集合所占用的字节数。 当capped值为true时,需要指定此参数,表示上限大小,当文档达到上限时, 会将之前的数据覆盖,单位为字节
- 查看集合:show collections
- 删除集合:db.集合名称.drop()
- 检查集合是否设定上限: db.集合名.isCapped()
3.3 简单练习
在mongo shell中输入下列命令,查看结果
show dbs
use test
show collections
db
db.stu.insert({'name':'郭靖', 'age':22})
show dbs
show collections
db.stu.find()
db.stu.drop()
show collections
db.dropDatabase()
show dbs
exit
3.3 mongodb中常见的数据类型(了解)
3.3.1 常见类型
- Object ID: 文档ID/数据的ID,数据的主键
- String: 字符串,最常用,必须是有效的UTF-8
- Boolean: 存储一个布尔值,true或false
- Integer: 整数可以是32位或64位,这取决于服务器
- Double: 浮点数
- Arrays: 数组/列表
- Object: mongodb中的一条数据/文档,即文档嵌套文档
- Null: 存储null值
- Timestamp: 时间戳,表示从1970-1-1到现在的总秒数
- Date: 存储当前日期或时间的UNIX时间格式
3.3.2 注意点
-
每个文档都有一个属性,为_id,保证每个文档的唯一性,mongodb默认使用_id作为主键
- 可以手动设置_id的值,如果没有提供,那么MongoDB为每个文档提供了一个独特的_id, 类型为objectID
-
objectID是一个12字节的十六进制数,每个字节两位,一共是24位的字符串:
- 前4个字节为当前时间戳
- 接下来3个字节的机器ID
- 接下来的2个字节中MongoDB的服务进程id
- 最后3个字节是简单的增量值
小结
- 服务端的启动
- sudo mongod --dbpath=数据库路径
- 进入mongo shell客户端
- mongo
- mongodb的数据库和集合命令
- show dbs
- use db_name
- show collections
- db
- db.集合名.drop()
- db.dropDatabase()
- exit
- 了解文档中的_id字段