Windows 环境
环境和版本
环境:Windows
MongoDB 版本:v5.0.1(.msi)
Robo 3T 版本:Robo 3T v1.4.3(.exe)
安装 MongoDB
MongoDB 是一个文档数据库,即在类似 JSON 的文档内存储数据。操作起来比较简单和容易。
运行安装包
安装包官方下载地址:MongoDB 社区版(MongoDB Community)
安装步骤基本上就是一直下一步:
这里选择完整安装即可。
作为服务安装,安装完成后会自动启动服务,服务名称和文件存储地址根据个人喜好修改。
这里默认勾选了安装官方推荐的可视化工具 MongoDB Compass,本例选择使用 Robo 3T,所以这里取消勾选。
配置环境变量
将 bin
目录配置到环境变量中才能使用 MongoDB 的命令。
bin
目录地址参考上面数据库文件和日志的存储地址,默认是 C:\Program Files\MongoDB\Server\5.0\bin
右键我的电脑 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量,然后将 bin
地址添加到用户变量或系统变量的 Path
中。
测试
打开命令行工具,执行命令 mongo
,显示如下就表示安装和配置成功。
启动和停止命令
启动/停止需要管理员权限,使用管理员身份打开命令行工具:
# 停止服务
net stop MongoDB
# 启动服务
net start MongoDB
# `MongoDB` 是安装时候定义的服务名称
安装 Robo 3T
安装
Robo 3T (原名 Robomongo)是一个 MongoDB 客户端可视化工具,下载地址:Studio 3T(专业版收费),Robo 3T(免费版)。
Robo 3T 1.4.3 Windows 64位 exe 下载地址
安装步骤也是一直下一步,中间可以指定安装地址和是否在菜单创建文件夹。
创建 MongoDB 数据库连接
注意 MongoDB 服务要开启,否则连接失败。
默认创建的是本地 MongoDB 的连接,地址 localhost
,默认端口27017
。
MongoDB 权限
新安装的 MongoDB 默认会安装两个系统数据库 admin 和 local。
- admin 存储所有的用户新信息,对 admin 数据库具有访问权限的用户可以读/写所有数据库。。
- local 数据库用于存储连接 MongoDB 的记录信息。
MongoDB 默认不启用权限认证(无用户名和密码,即管理员身份),只要能连接到该服务器,就可以连接本地的 MongoDB。
所以 Robo 3T 连接本地 MongoDB 的时候,权限认证 Authentication
可以不启用。
MongoDB 概念
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
创建数据库
Robo 3T 创建本地数据库连接只需定义连接名称即可,其它都不需要配置。地址、端口都是用默认的,用户名和密码默认为空。
连接本地数据库后,右键连接 - Create Database - 填写数据库名称-创建。
删除数据库可以右键数据库 - Drop Database
插入数据
在 MongoDB 中以集合(Collection)的形式存储类似 SQL Table 表的数据。
因为可以存储不同结构的数据,所以称为集合。
一条数据称作文档(Document)。
MongoDB 可以用 JSON 语法的文本内容插入数据。
文本可以是一条数据(一个对象或一个数组):
// 一个对象
{ "name": "李光洙", "nickname": "长颈鹿"}
// 一个数组
[
{ "name": "金钟国", "nickname": "斯巴达"},
{ "name": "刘在石", "nickname": "蚂蚱"}
]
也可以是多条数据(MongoDB 识别每条数据,数据可以挨着写),并且结构可以不同:
// 这会插入两条数据,并不会报语法错误
{ "name": "李光洙", "nickname": "长颈鹿"}
[
{ "name": "金钟国", "nickname": "斯巴达"},
{ "name": "刘在石", "nickname": "蚂蚱"}
]
Robo 3T 向集合插入数据,首先右键 Collections 创建一个集合(比如命名为 users
):
右键集合 - Insert Document(注意这里没有写注释):
插入后双击 users 集合即可查询集合的数据:
Linux 环境安装 MongoDB
环境和版本
环境:Ubuntu 20.04 LTS
MongoDB 版本:v5.0.2
安装
官方文档 Install MongoDB Community Edition on Ubuntu
运行问题
按照文档启动 mongod(本例用的 systemctl
):systemctl start mongod
没有报错,但是却不能正常使用。
查看状态详情:systemctl status mongod
显示 code=exited, status=14
,查看官方文档:Exit Codes and Statuses status=14
表示未捕获异常。
于是查看日志 cat /var/log/mongodb/mongod.log
发现这一条信息:
{"t":{"$date":"2021-08-16T10:44:18.399+08:00"},"s":"E", "c":"NETWORK", "id":23024, "ctx":"initandlisten","msg":"Failed to unlink socket file","attr":{"path":"/tmp/mongodb-27017.sock","error":"Operation not permitted"}}
这个文件("path":"/tmp/mongodb-27017.sock"
)不允许操作("error":"Operation not permitted"
)。
修改这个文件的权限:chown mongodb:mongodb /tmp/mongodb-27017.sock
。
最后重新启动 systemctl restart
。
远程连接
使用 Robo 3T 远程连接服务器上的 MongoDB,可以使用 SSH 通道。
类似 SSH 连接服务器,在服务器上连接 MongoDB,所以这里的 address 填写同本地一样。
本例使用的 password 方式,也可以使用私钥。