MongoDB是由C++语言编写的基于分布式文件存储的开源数据库系统。MongoDB与MySQL等经典的关系数据库不同,它是一种NoSQL数据库。NoSQL即“Not Only SQL”,意思是“不仅仅是SQL”。
MongoDB作为NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键-值对存储,列存储,文档存储,图形数据库
- 适用于非结构化和不可预知的数据
- 高性能,高可用性和可伸缩性
MongoDB简介
文档(Documents)
MongoDB数据库中的一条记录(record)就是一个文档。文档由键-值对构成。MongoDB中的文档与JSON对象十分相似。文档中的值可以包含其他文档、数列或由文档构成的数列。
下面是一个文档的示例:
1 | { |
集合(Collections)
MongoDB把文档存储在集合中。集合的概念类似于关系数据库中的“表”(tables)。但与关系数据库的不同之处在于,一个集合并不会要求处于这个集合之下的文档使用统一的结构。
MongoDB安装(Linux)
下载安装
尽管许多Linux发行版的软件仓库中提供了MongoDB的一键安装,但是就我的经验来讲,最好还是到官网下载tgz包下载安装比较好。这样的话,一来可以获得最新的安装版本,二来部分Linux的软件仓库中之提供了数据库的核心软件,并没有提供mongoimport、mongoexport等工具(我使用的OpenSuse Leap 42.2就是这样),而这些工具也是比较常用的。
官网下载合适版本后,解压文件。
1 | tar -zxvf [mongodb 安装包名字] #解压 |
然后需要将bin目录添加到PATH路径中。在Linux中修改PATH应该修改 /etc 目录下的profile.local文件,具体根据发行版不一可能会有差异。将以下语句写到配置文件的最末行:
1 | export PATH=$PATH:<mongodb安装目录>/bin |
启动数据库服务
MongoDB数据库的默认位置是 /data/db,如果你要使用这个位置,需要手动创建这个目录。但一般我会使用其他目录,这时在启动数据库服务时,需要指定数据库路径(—dbpath)。
所以,这个过程大概是这样的:
1 | cd ~/workspace/mongodb |
不论对数据库进行什么操作,数据库服务必须处于运行状态。
Mongodb后台管理Shell
在终端中运行mongo命令,就可以进入后台管理Shell。MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。
当进入MongoDB数据库后台后,它会默认连接到test数据库。
Mongodb后台Shell中的命令与Pymongo中的命令大体一致,Shell中的命令使用不再赘述。详细可以查看菜鸟教程中的MongoDB教程。
导入示例数据库
为了学习如何操作数据,首先,需要有一些数据。通过以下步骤导入mongodb官方的示例数据库。
下载示例数据
下载地址为:https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
保存成名为primer-dataset.json的文件。
将数据导入到集合中
在系统终端中,使用mongoimport把刚才下载的文件中的数据导入到一个名为restaurants的集合中,该集合在test数据库里。如果已经存在名为restaurants的集合,下面的命令会删除这个集合并重新导入。
1 | mongoimport --db test --collection restaurants --drop --file ~/downloads/primer-dataset.json |