一: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无需事先为要存储的数据建立字段, 随时可以存储自定义的数据格式。 而在关系数据库中, 增删字段是一件非常麻烦的事情。 如果是非常大数据量的表, 增加字段简直就是一个噩梦
二:MongoDB 的安装
1:Linux 中安装
1:安装依赖的安装包
yum install libcurl openssl
2:MongoDB 源码下载地址:https://www.mongodb.com/download-center#community
3:这里我们选择 tgz 下载,下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装)
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz # 下载
tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz# 解压 mv mongodb-src-r4.2.8/usr/local/mongodb4 # 将解压包拷贝到指定目录
4:MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
export PATH=<mongodb-install-directory>/bin:$PATH
<mongodb-install-directory> 为你 MongoDB 的安装路径。如本文的 /usr/local/mongodb4 。
[root@xpq bin]# export PATH=/usr/local/mongodb/mongodb-linux-x86_64-3.6.21/bin:$PATH
2:Ubuntu 中安装
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 选择相应版本和操作系统并下载
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:window中安装
https://www.runoob.com/mongodb/mongodb-window-install.html
三:MongoDB的简单实用
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 生产环境正式的启动方式
默认情况下 MongoDB 启动后会初始化以下两个目录:
- 数据存储目录:/var/lib/mongodb
- 日志文件目录:/var/log/mongodb
我们在启动前可以先创建这两个目录并设置当前用户有读写权限:
sudo mkdir -p /var/lib/mongo sudo mkdir -p /var/log/mongodb sudo chown `whoami`/var/lib/mongo # 设置权限 sudo chown `whoami`/var/log/mongodb # 设置权限
接下来启动 Mongodb 服务:
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork
打开 /var/log/mongodb/mongod.log 文件看到以下信息,说明启动成功。
# tail -10f /var/log/mongodb/mongod.log2020-07-09T12:20:17.391+0800 I NETWORK [listener]Listening on /tmp/mongodb-27017.sock2020-07-09T12:20:17.392+0800 I NETWORK [listener]Listening on 127.0.0.12020-07-09T12:20:17.392+0800 I NETWORK [listener] waiting for connections on port 27017
-
--dbpath: 指定数据库的存放路径
-
--logpath: 指定日志的存放路径
-
--append: 或--logappend 设置日志的写入形式为追加模式
-
--fork: 或-fork 开启新的进程运行mongodb服务
-
--f: 或-f 配置文件路径(可以将上述配置信息写入文件然后通过该文件中的参数进行加载启动)
-
--auth: 以权限认证的方式启动,我们会在后边的课程中学习该内容
1.3 查看是否启动成功
ps aux | grep mongod
四:MongoDB 后台管理 Shell
如果你需要进入 mongodb 后台管理,你需要先打开 mongodb 装目录的下的 bin 目录,然后执行 mongo 命令文件。
MongoDB Shell 是 MongoDB 自带的交互式 Javascript shell,用来对 MongoDB 进行操作和管理的交互式环境。
当你进入 mongoDB 后台后,它默认会链接到 test 文档(数据库):
$ cd /usr/local/mongodb4/bin $ ./mongo MongoDB shell version v4.2.8 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session {"id": UUID("2cfdafc4-dd56-4cfc-933a-187b887119b3")}MongoDB server version:4.2.8Welcome to the MongoDB shell.……
由于它是一个JavaScript shell,您可以运行一些简单的算术运算:
>2+24>3+69
现在让我们插入一些简单的数据,并对插入的数据进行检索:
> db.runoob.insert({x:10})WriteResult({"nInserted":1})> db.runoob.find(){"_id":ObjectId("5f069bdb4e02f8baf90f1184"),"x":10}>
第一个命令将数字 10 插入到 runoob 集合的 x 字段中。
如果要停止 mongodb 可以使用以下命令:
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --shutdown
也可以在 mongo 的命令出口中实现:
>use admin switched to db admin > db.shutdownServer()
五. mongodb的简单使用
开启mongodb server的情况下,在进入mongo shell后,就可以做简单的使用了
5.1 mongodb数据库的命令
-
查看当前的数据库:db(没有切换数据库的情况下默认使用test数据库)
-
查看所有的数据库:show dbs /show databases
-
切换数据库:use db_name
-
db_name为show dbs后返回的数据库名
-
-
删除当前的数据库:db.dropDatabase()
5.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()
5.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
5.3 mongodb中常见的数据类型(了解)
5.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时间格式
5.3.2 注意点
-
每个文档都有一个属性,为id,保证每个文档的唯一性,mongodb默认使用id作为主键
-
可以手动设置id的值,如果没有提供,那么MongoDB为每个文档提供了一个独特的id, 类型为objectID
-
-
objectID是一个12字节的十六进制数,每个字节两位,一共是24位的字符串:
-
前4个字节为当前时间戳
-
接下来3个字节的机器ID
-
接下来的2个字节中MongoDB的服务进程id
-
最后3个字节是简单的增量值
-
1.1 什么是mongodb
-
mongodb 是一个功能最丰富的NoSQL非关系数据库。由 C++ 语言编写。
-
mongodb 本身提供S端存储数据,即server;也提供C端操作处理(如查询等)数据,即client。