MongoDB 是一款非关系型数据库。它以文档形式存储数据,数据格式类似 JSON 的 BSON。具有高性能,读写快且支持水平扩展。数据模型灵活,能很好地处理复杂数据。高可用性方面,通过副本集实现故障转移。适用于内容管理、物联网等诸多场景。这篇文章带你入门MongoDB数据库
MongoDB 安装
一、Centos 系统下的安装
-
创建配置文件:在
/etc/yum.repos.d
目录下创建mongodborg.repo
文件,使用sudo touch /etc/yum.repos.d/mongodborg.repo
命令,这为后续安装源的配置奠定基础。 -
编辑配置文件:通过
sudo vi /etc/yum.repos.d/mongodborg.repo
进入编辑界面,按a
键切换到插入模式,输入以下内容:
收起
plaintext
[mongodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/4.4/x86_64/
gpgcheck=0
enabled=1
保存并退出,此配置指定了 MongoDB 的安装源。
3. 安装 MongoDB:执行 sudo yum install -y mongodb-org
命令,系统将自动从配置的源下载并安装 MongoDB 及其相关组件。
4. 启动服务:利用 sudo service mongod start
启动 MongoDB 服务,使数据库进入运行状态。
5. 设置开机启动:运行 sudo chkconfig mongod on
,确保系统每次开机时 MongoDB 能自动启动。
6. 修改配置文件:使用 sudo vi /etc/mongod.conf
编辑配置文件,将 bindip 127.0.0.1
替换为 0.0.0.0
,以便允许外部访问 MongoDB 服务。
7. 重启服务:执行 sudo service mongod restart
,使配置更改生效。
8. 进入数据库:在终端输入 mongo
或 sudo /bin/mongo
,即可进入 MongoDB 数据库操作界面。
二、Windows 系统下的安装
- 下载 MongoDB:访问官方下载地址
https://www.mongodb.com/download-center?jmp=nav#community
下载适合 Windows 系统的 MongoDB 安装包。同时,可从https://download.csdn.net/download/u011671022/10116590
下载可视化工具 MongoChef(注意安装路径不能包含中文)。若安装过程中遇到服务运行问题,建议使用管理员命令行执行安装程序。为方便后续操作,可将 MongoDB 安装路径的bin
目录添加到系统的Path
环境变量。 - 安装校验:在本地创建数据库文件存储路径,如
D:\MongoDb\data\db
。打开命令行终端,进入 MongoDB 安装路径的bin
目录(默认为C:\Program Files\MongoDB\Server\3.4\bin
),运行mongod --dbpath=D:\MongoDb\data\db
命令启动 MongoDB 服务(需将路径替换为实际创建的存储路径)。此时窗口会输出运行信息,若看到 MongoDB 服务在端口27017
上正常运行且程序阻塞在原地,则表示服务启动成功。重新开启一个终端,执行mongo.exe
命令启动数据库客户端,输入show dbs
可查看系统自带的admin
和local
等数据库,至此完成安装与启动。
三、Ubuntu 系统下的安装
- 准备工作:开启虚拟机并进入 Ubuntu 系统(以 Ubuntu 16.04 为例),若 root 用户未开启,在终端输入
sudo passwd root
设置 root 用户密码。 - 安装 MongoDB:执行
sudo apt-get install mongodb
进行在线安装(需确保网络连接正常)。安装过程中会自动安装一些依赖包,如libboost-program-options1.58.0
、libboost-thread1.58.0
等,安装完成后会占用一定的磁盘空间。 - 检查启动状态:输入
pgrep mongo -l
检查 MongoDB 服务是否已启动。若输出类似3371 mongod
的信息,则表明服务已成功启动;若未启动,可使用sudo service mongodb stop
停止服务,或sudo service mongodb start
启动服务。 - 进入数据库:在终端输入
mongo
,若出现 MongoDB shell 界面的提示符,则说明已成功进入数据库操作环境,可进行后续的数据库操作。
四、MongoDB 启动与测试要点
-
服务端启动方式
- 默认端口与配置文件位置:MongoDB 服务端默认端口为
27017
,默认配置文件位于/etc/mongod.conf
,默认日志位置为/var/log/mongodb/mongod.log
。 - 测试与生产环境启动:本地测试可通过
sudo service mongod start
(启动)、sudo service mongod stop
(停止)、sudo service mongod restart
(重启)命令进行操作;生产环境启动则需使用sudo mongod [--auth --dbpath=dbpath --logpath=logpath --append --fork] [--f logfile ]
命令,其中--dbpath
指定数据库存放路径,--logpath
指定日志路径,--append
或--logappend
设置日志追加模式,--fork
或-fork
开启新进程运行服务,--f
或-f
配置文件路径,--auth
用于以权限认证方式启动(后续课程会深入学习)。
- 默认端口与配置文件位置:MongoDB 服务端默认端口为
-
查看启动状态:在终端输入
ps aux | grep mongod
可查看 MongoDB 服务是否成功启动,若有相关进程信息显示,则表明启动成功。 -
客户端启动与操作:启动 MongoDB 客户端可在终端输入
mongo
进入 mongo shell,输入mongo –help
可查看帮助信息,在操作过程中可使用exit
或ctrl+c
退出客户端。
MongoDB 的简单使用:
一、数据库操作
(一)新建数据库
在 MongoDB 中,使用 use
命令来创建或切换到指定的数据库。例如,use myDatabase
将会创建名为 myDatabase
的数据库(如果它不存在),并将其设置为当前操作的数据库。需要注意的是,只有在向该数据库中插入数据后,数据库才会真正被创建并在 show dbs
命令中显示出来。
这里本来是没有数据库的
use了以后就算创建了数据库,但是还是不会显示,得真正插入数据了才会显示,只有插入数据了才会显示出来
(二)查询数据库
show dbs
命令用于列出当前所有的数据库。默认情况下,会显示admin
、config
和local
这三个数据库。其中,admin
数据库主要存储数据库实例的管理信息和用户权限等;config
数据库用于存放数据库的配置信息;local
数据库可能用于存储与本地环境或特定本地操作相关的数据,但具体用途可能因数据库系统的不同而有所差异。db
命令则用于显示当前正在操作的数据库。在未进行任何操作时,默认的当前数据库是test
,不过由于test
数据库通常没有数据,所以在执行show dbs
命令时它不会显示。
(三)删除数据库
要删除数据库,首先需要使用 use
命令切换到要删除的数据库,然后执行 db.dropDatabase()
命令。例如,如果要删除名为 myDatabase
的数据库,操作步骤为 use myDatabase
后紧跟 db.dropDatabase()
。
这样就删除了,一开始我就使用的是demo
二、集合操作
(一)添加集合
使用 db.createCollection(集合名)
命令可以创建一个新的集合。例如,db.createCollection("myCollection")
会在当前数据库中创建名为 myCollection
的集合。
这边创建了一个为stu的空集合,也可以像之前一样
这样也算创建了一个stu的集合
(二)查询集合
show collections
命令用于显示当前数据库的集合列表,方便用户查看已创建的集合。
(三)删除集合
通过 db.集合名.drop()
命令可以删除指定的集合。例如,db.myCollection.drop()
将删除名为 myCollection
的集合。
三、数据操作
(一)添加数据
- 向集合中添加单条数据可以使用
db.集合名.insert({数据内容})
命令。例如,db.users.insert({name:'张三',age:20})
会向users
集合中插入一条包含name
为张三
、age
为20
的数据记录。 - 若要添加多条数据,则在
insert
命令后依次列出多条数据记录,每条记录用逗号分隔。如db.info.insert({name:'张三',age:20},{name:'zhangsan',age:20},{name:'zhangsan',age:20})
会向info
集合中插入三条数据。
(二)删除数据
db.集合名.remove({查询条件})
命令用于删除所有满足条件的数据。例如,db.users.remove({age:20})
会删除users
集合中所有age
为20
的数据记录。db.集合名.deleteMany({查询条件})
也用于删除所有满足条件的数据,功能与remove
类似,但在某些情况下可能有性能或语法上的细微差别。db.集合名.deleteOne({查询条件})
则仅删除满足条件的第一条数据。比如db.movies.deleteOne({name:'zhangsan'})
只会删除movies
集合中第一条name
为zhangsan
的数据记录。
(三)修改数据
db.集合名.update({查询条件},{$set:{修改内容}})
命令用于修改数据。需要注意的是,它默认只修改满足查询条件的第一条数据。例如,db.movie.update({name:'zhangsan'},{$set:{age:20}})
会将movie
集合中第一条name
为zhangsan
的数据的age
修改为20
。
db.集合名.updateMany({查询条件},{$set:{修改内容}})
可修改所有满足条件的数据。例如,db.users.updateMany({age:20},{$set:{status:'active'}})
会将users
集合中所有age
为20
的数据的status
修改为active
。db.集合名.updateOne({查询条件},{$set:{修改内容}})
用于修改满足条件的第一条数据,与update
类似,但更明确地表明只修改一条数据,在某些情况下可提高代码的可读性。
(四)查询数据
db.集合名.find()
命令用于查询集合中的所有数据。db.集合名.find().pretty()
则会以更易读的格式显示查询结果,但pretty()
方法仅在命令行或查询客户端中可用,在代码中无法直接使用。- 可以通过在
find
命令中添加查询条件来筛选数据。例如,db.info.find({name:'lisi',age:20})
会查询info
集合中name
等于lisi
且age
等于20
的数据,如果不存在则无返回结果。 - 使用
$or
运算符可以进行或条件查询,如db.info.find({$or:[{name:'lisi',age:25},{name:'王五'}]})
会查询info
集合中满足name
为lisi
且age
为25
或者name
为王五
的数据。
$ne
运算符用于非条件查询,如db.info.find({name:{$ne:'lisi'}})
会查询info
集合中name
不等于lisi
的数据。
- 对于数值比较,MongoDB 提供了
$lt
(小于)、$lte
(小于等于)、$gt
(大于)、$gte
(大于等于)等运算符。例如,db.t4.find({$where:function(){return this.age>18}})
或定义函数def demo(): return this.age>18
后使用db.t4.find(demo())
都可以查询t4
集合中age
大于18
的数据。
好了,大致就是这些,后面我会更新进阶的内容,我也是刚学,请各位大佬多多指教!