Published on

MongoDB 基础

安装

  1. 登陆服务器,以 root 用户身份运行以下命令更新操作系统软件包
sudo yum update

2.添加 MongoDB 的 YUM 源

sudo vi /etc/yum.repos.d/mongodb-org-4.4.repo

# 输入以下内容
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc

3.安装 MongoDB

sudo yum install -y mongodb-org

4.启动 MongoDB

sudo systemctl start mongod

5.验证 MongoDB 服务是否正常启动

systemctl status mongod

如果启动成功,会显示类似如下的信息:

● mongod.service - MongoDB Database Server

Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)

Active: active (running) since Sun 2023-05-21 17:42:13 CST; 6min ago

Docs: manual

Main PID: 43790 (mongod)

Memory: 83.0M

CGroup: /system.slice/mongod.service

└─43790 /usr/bin/mongod -f /etc/mongod.conf

如果失败的话,就需要去查一下日志,我这边失败了好多次,每次都是当前用户组的权限不足导致的。

6.如果服务启动失败,查看对应的日志,linux 上的命令如下:

 sudo cat /var/log/mongodb/mongod.log 

7.然后在日志中主要抓有 error字样的最新的内容,我这边基本是由于没有权限导致的,所以会对日志中提到的文件及目录重新设置权限。

{"t":{"$date":"2023-05-21T17:36:31.222+08:00"},"s":"E",  "c":"STORAGE",  "id":20557,   "ctx":"initandlisten","msg":"DBException in initAndListen, terminating","attr":{"error":"IllegalOperation: Attempted to create a lock file on a read-only directory: /var/lib/mongo"}}

8.可以看到 /var/lib/mongo目录对于当前用户来说是只读的,那么我们可以修改其操作权限:

sudo chmod 1777 /var/lib/mongo/

那这行指令的作用就是将 /var/lib/mongo/目录的权限设置为 rwxrwxrwt,其中:

  • 第一个数字 1 表示该目录设置了 sticky bit的权限
  • 接下来的三个数字 777 表示给该目录的所有者、该目录所属的组、以及其他用户都授予读、写和执行权限

这里说的 sticky bit 权限的作用是防止其他用户删除或者移动该目录中不属于自己的文件。只有文件所有者和管理员才有权利对这些文件进行操作。

9.然后重新启动 Mongodb 的服务

sudo systemctl restart mongod

连接 MongoDB 服务

mongo --host 127.0.0.1 --port 27017

如果连接成功,将出现 mongo shell提示符。我们可以使用 mongo shell执行 MongoDB 数据库的各种操作。

创建数据库及集合

创建数据库

mongo shell 中可以通过 show databases命令来查看当前的 MongoDB 实例中存在哪些数据库,一般情况下默认有三个:

  • admin:这是 MongoDB 的管理数据库,存储了集群的元数据和系统级别的操作日志。在该数据库中,您可以创建和管理用户、角色和其他集群级别的配置参数。
  • config:此数据库用于存储 MongoDB 分片集群的元数据信息。在该数据库中,您可以查看和管理分片集群的配置信息。
  • local:这是一个特殊的数据库,仅在单个节点上使用。它用于存储诸如事务日志和节点状态等本地数据

⚠️需要注意的是,如果您不小心删除了这三个默认数据库之一,则可能会导致 MongoDB 集群中的故障,并可能无法重新启动。因此,请谨慎操作并做好数据备份和恢复准备工作。

创建集合

db.createCollection('customers')

导入数据

将之前备份的数据导入到 MongoDB 数据库中。

使用以下指令就可以将之前备份好的数据库文件导入数据库中:

mongorestore -d <database_name> <backup_folder_path>

这个指令不用连接到数据库,直接在终端就可以使用。

  • database_name:顾名思义,即数据库名称
  • backup_folder_path:要导入的数据库文件,可以是目录也可以是文件,文件必须是 BSON 文件,如果是目录,则目录中所有的文件都需要是 BSON 文件

导入完成后,我们可以连接数据库查看是否导入成功。

  • use <database_name>:进入到指定的数据库;
  • show collections:查看数据库中的集合(表)列表;
  • db.<集合名词>.find():查看该集合中的数据;