MongoDB数据库的介绍、安装、环境配置、基本操作

MongoDB数据库的介绍、安装、环境配置、基本操作

MongoDB是一种基于分布式文件存储的数据库,由C++语言编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。MongoDB介于关系数据库和非关系数据库之间,是非关系数据库中功能最丰富,最像关系数据库的数据库。MongoDB支持的数据结构非常松散,类似于JSON的BSON格式,因此可以存储较为复杂的数据类型。

MongoDB介绍

MongoDB最大的特点是支持的查询语言非常强大,其语法有点类似面向对象的查询语句,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。在MongoDB。数据中以Key-Value的形式存储,使用MongoDB管理软件(可视化工具)Robo Mongo,可以看到数据在MongoDB中的存储方式。


MongoDB的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
(1)面向集合存储、易存储对象类型的数据
(2)模式自由
(3)支持动态查询
(4)支持完全索引,包含内部对象
(5)支持查询
(6)支持复制和故障恢复
(7)使用高效的二进制数据存储,包括大型对象(如视频等)
(8)自动处理碎片,以支持云计算层次的扩展性
(9)支持Ruby、Python、Java、C++、PHP、C#等多种语言
(10)文件存储格式为BSON(一种JSON的扩展)
(11)可通过网络访问


所谓“面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collection)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(Table),不同的是MongoDB不需要定义任何模式(Schema),具有闪存高速缓存算法,能够快速识别数据库内大数据集中的热数据,提供一致的性能改进。

模式自由(Schema-Free),意味着对于存储在MongoDB数据库中的文件,不需要知道它的任何结构定义。如果需要,完全可以把不同结构的文件存储在同一个数据库里。

存储在集合中的文档被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized Document Format)。


MongoDB已经在多个站点部署,其主要场景如下:
(1)网站实时数据处理。非常适合实时地添加、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
(2)缓存。由于性能很高,因此适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。
(3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。

MongoDB的安装

使用Python操作MongoDB需要搭建开发环境。配置环境需要安装MongoDBMongoDB可视化工具和Python操作MongoDB的第三方库PyMongo

(1)Mac OS下安装MongoDB

Mac OS系统下面有一个非常方便的包管理工具:Homebrew。这里如果有的话,可以采用下面的方式来进行安装并启动MongoDB

brew update
brew install mongodb
#启动MongoDB
mongod --config /usr/local/etc/mongod.conf

那么没有安装Homebrew的话,可以去官网下载,一般后面你学什么东西,需要用到homebrew。如果你是Mac OS系统,但是已没有安装Home brew,那么你可以在终端输入以下命令来下载、并把它解压到~/book/program/mongodb文件夹中。

cd~/book/program
curl -O https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-3.4.4.tgz
tar –zxvf mongodb-osx-x86_64-3.4.4.tgz
mkdir –p mongodb
cp –R –n mongodb-osx-x86_64-3.4.4/ mongodb

安装成功之后,你可以在~/book/program/mongodb/bin文件夹下看到应用程序文件。使用这种方式,MongoDB不会自动创建配置文件,还需要我们手动配置。直接在bin文件夹下面创建两个文件夹–“log”和”data”,然后创建配置文件mongodb.conf,在里面编写以下内容:

systemLog:
      destination: file
      path: log/mongo.log
      logAppend: true
storage:
      dbPath: data
net:
      bindIp: 127.0.0.1

我们在bin目录下新创建了log和data文件夹,和mongodb.conf配置文件,先确定一下是否有误,然后我们就可以启动MongdDB:

cd book/program/mongodb/bin
mongod --config mongodb.conf

运行MongoDB以后,在终端不会出现任何Log,Log已经被写入到文件中去了。

(3)Ubuntu下安装MongoDB

首先添加MongoDB的源:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80--recv 0C49F3730359A14518585931BC711F9BA15703C6
    echo "deb [ arch=amd64, arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee  /etc/apt/sources.list.d/mongodb-org-3.4.list

然后输入以下命令进行安装:

sudo apt-get update
sudo apt-get install -y mongodb-org

Ubuntu版的MongoDB自带了一个配置文件,这个配置文件应该在/etc/mongod.conf中,所以我们可以使用下面的命令来启动MongoDB:

mongod --config /etc/mongod.conf
(3)在Windows下安装MongoDB

MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装。根据你的系统下载 32 位或 64 位的 .msi 文件,下载后双击该文件,按操作提示安装即可。现在是什么年代了,Windows电脑应该都是64操作系统的了,32位的建议从新换电脑吧,现在官网好像是已经没有32位的安装包了。点开官网链接,选择相应的系统版本,点击Download就可以了。

安装过程中,你可以通过点击 “Custom(自定义)” 按钮来设置你的安装目录,这里建议你把路径修改为C:\MongoDB,方便我们下步操作,接着下一步会在左下角显示 “install mongoDB compass”,这里建议 不勾选(当然你也可以选择安装它,可能需要更久的安装时间),MongoDB Compass 是一个图形界面管理工具,我们可以在后面自己到 官网下载安装。

MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。我是在 E 盘安装了 mongodb,现在让我们创建一个 data 的目录然后在 data 目录里创建 db 目录。

cd e: #我是安装在E盘的
cd mongodb #进入目录
cd mkdir data #创建data目录
cd data #进入data目录
cd db #在data文件夹下创建db

从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。

E:\mongodb\bin\mongod --dbpath e:\mongodb\data\db
MongoDB数据库的介绍、安装、环境配置、基本操作

执行成功会当前命令行窗口输出一大段英文内容,然后会卡住但是MongoDB已经正常启动了,你可以在浏览器中输入http://localhost:27017查看,如果出现It looks like you are trying to access MongoDB over HTTP on the native driver port.就是成功了,那么你刚才运行命令的窗口会一直卡在呢里,你可以重新打开一个命令行窗口,进入bin目录下,输入mongo.exe,这时候你就进入了MongoDB Shell,它是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境,插入一些简单的记录并查找它:

 db
> test
db.zjj.insert({x:20})
> WriteResult({ "nInserted" : 1 })
db.zjj.find()
> { "_id" : ObjectId("5dfc4026b4401b83454721b6"), "x" : 20 }

配置系统服务

这样可设置为 开机自启动,可直接手动启动关闭,可通过命令行net start MongoDB 启动,那么net stop MongoDB 就是关闭服务了,不用再进入bin的目录下启动,这里建议还是把MongoDB配置为系统服务吧。通过执行mongod.exe,使用–install选项来安装服务,直接就配置成为我们计算机服务,logpath根据自己的情况修改。

第一种方式

先创建一个配置文件mongod.conf。该文件必须设置 systemLog.path 参数,包括一些附加的配置选项更好。例如,创建一个配置文件位于 E:\mongodb\mongod.conf,其中指定 systemLog.path 和 storage.dbPath。具体配置内容如下:

systemLog:
    destination: file
    path: e:mongodb\data\log\mongod.log
storage:
    dbPath: e:mongodb\data\db

然后通过执行mongod.exe,使用–install选项来安装服务,使用–config选项来指定之前创建的配置文件

E:\mongodb\bin\mongod.exe --config "E:\mongodb\mongod.conf" --install

第二种方式

直接输入下面的命令即可:

mongod --bind_ip 0.0.0.0 --logpath E:\MongoDB\data\log\mongo.log --logappend --dbpath E:\MongoDB\data\db --port 27017 --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

要使用备用 dbpath,可以在配置文件(例如:C:\mongodb\mongod.cfg)或命令行中通过 –dbpath 选项指定。

如果需要,您可以安装 mongod.exe 或 mongos.exe 的多个实例的服务。只需要通过使用 –serviceName 和 –serviceDisplayName 指定不同的实例名。只有当存在足够的系统资源和系统的设计需要这么做,按照上面的代码自己看着来。

配置完成不会打印任何提示,可以输入windows+R,打开cmd命令窗口输入services.msc查看计算机服务中是否有MongoDB,即为成功,这里有的会安装失败提示:发生服务特定错误100,先删除自动生成的mongodb.lock文件,再次尝试,不行的话再删除storage.bson文件即可

在安装和启动的时候有很多坑,大都是路径的问题,我这里把我的安装路径贴出来,你根据你自己的安装路径修改相关代码。

第三种方式

进入MongoDB的文件目录,也就是bin文件夹的同级目录下,创建data和log文件夹,分别用于存放数据库文件和log日志文件,再创建一个mongo.conf配置文件,添加一下代码:

# 数据库文件路径
dbpath=E:\MongoDB\data
# 日志输出文件路径
logpath=E:\MongoDB\log\mongo.log
# 错误日志采用追加模式
logappend=true
# 启用日志文件,默认启用
journal=true
# 过滤掉无用的日志信息,若需要调试使用,设置为false
quiet=true
# 端口号 默认27017
port=27017

代码中的数据库文件路径为新建的data文件夹路径(data文件夹必须在MongoDB的目录下),日志文件为新建的log文件夹路径。写入配置信息并保存,然后打开CMD窗口,切换到bin目录,输入命令:

mongod --config "mongo.conf的绝对路径" --install --serverName "MongoDB"
net start MongoDB

在MongoDB4.2.2版本已经是一条龙服务了,直接会弹出窗口让你选择是否配置为service,也就是不用自己配置了。

图形化管理工具

RoboMongo是一个跨平台的MongoDB管理工具,现在改名为Robo 3T,可以在图形界面中查询或者修改MongoDB。

下载安装并打开,单击弹出窗口中的Greate,弹出Connection Settings,输入Name和Address信息:Name为该连接的名字,可自定义命名;Address处分别为输入数据库IP地址和端口,对于本地数据库,Address的ip为localhost,端口为27017即可,然后单击Save按钮,单击Connect按钮


连接数据库后,你会看到数据库有一个system文件夹,文件夹里面有admin和local数据库,两者皆属于系统数据库。

创建数据库方法如下: 步骤01: 右击“local”,单击“Create Database”,将数据库命名为“DB”。
步骤02: 打开数据库“DB”,右击“Collections”,选择“Create Collection”,命名为“user”。新建的user称为集合,相当于关系数据库里面的数据表。
步骤03: 右击“user”,选择“Insert Document”。Document代表文档内容,相当于MySQL里数据表中的数据。Document是BSON格式,类似JSON。
步骤04: 集合user里有文件夹“Indexes”,用于实现集合的索引功能;文件夹“Functions”用于实现脚本功能;在“Users”中设定用户账号密码,用于设置访问权限。


数据在MongoDB中是按照“库(Database)”-“集合(Collections)”-“文档(Document)”的层级关系来存储的。可以跟Python的数据结构来做一下类比,文档相当于一个字典,集合相当于一个包含了很多字典的列表,库相当于一个大字典,大字典里面的每一个键值对都对应了一个集合,Key为集合的名字,Value就是一个集合。我们可以使用Python第三方库PyMongo来进行一些插入和读取操作

PyMongo模块是Python对MongoDB操作的接口包,能够实现对MongoDB增删改查和排序等操作。

PyMongo的安装

直接使用pip install pymongo命令安装

PyMongo的使用

要使用PyMongo操作MongoDB,首先需要初始化数据库连接。如果MongoDB运行在本地计算机上,而且也没有修改端口或者添加用户名及密码,那么初始化MongoClient的实例的时候就不需要带参数,你可以这样写:

from pymongo import MongoClient
client=MongoClient()

#MongoDB运行在其他服务器上,而且有用户名和密码
from pymongo import MongoClient
client=MongoClient('mongodb://kingname:12345@220.23.110.21:3366')

#如果没有设置权限验证
from pymongo import MongoClient
client=MongoClient('mongodb://220.23.110.21:3366')

#MongoDB URI的格式
mongodb://用户名: 密码 @ 服务器IP或者域名 : 端口

# 创建对象,连接本地数据库
# 方法一
# client=pymongo.MongoClient()
# 方法二
# client=pymongo.MongoClient('localhost',27017)
# 方法三
# client=pymongo.MongoClient('mongodb://localhost:27017')
# 连接DB数据库
db=client['DB']
# 连接集合user,集合类似关系数据库的数据表
# 如果集合不存在,就会新建集合user
user_collection=db.user

默认情况下,MongoDB只允许本机访问数据库。这是因为MongoDB默认没有访问密码,出于安全问题,不允许外网访问。如果需要从外网访问数据库,那么就需要修改我们的配置文件mongod.conf,就是我们自己添加的。

mongod.conf文件中有个”bindIp”,默认是127.0.0.1,也就是只允许本机访问。如果需要从其他计算机访问这个MongoDB,那么你可以把Ip地址修改为0.0.0.0,修改完保存重新启动MongoDB,那么我们使用PyMongo初始化数据库连接的代码就要做一些修改,把Ip地址和端口号修改一下即可。

连接数据库之后,就是做一些常用的操作了,参考:PyMongo和MongoDB数据库的交互

分享到 :