MongoDB 数据库管理系统

news2024/11/27 19:43:07

MongoDB是一个非关系型数据库管理系统,它使用文档模型存储数据。MongoDB中的文档类似于JSON对象,可以包含键值对和嵌套文档。MongoDB提供了强大的查询语言、聚合框架、索引和直接在数据存储中运行的计算。

MongoDB被广泛应用于许多领域,特别是Web应用程序和大数据领域。它具有高度可扩展性和灵活性,可以处理多种数据类型。此外,MongoDB还提供了一系列工具和库,以方便开发人员在应用程序中使用它。

MongoDB可以存储Web内容管理系统的重要数据,例如页面和文章内容、标签等,以及和用户相关的数据。

安装

执行以下命令添加 MongoDB 的官方仓库:

vim /etc/yum.repos.d/mongodb-org-4.4.repo
在文件中添加以下内容
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc

保存并退出。

安装 MongoDB:

  

[root@localhost ~]# yum install mongodb-org -y
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * epel: mirrors.bfsu.edu.cn
 * extras: mirrors.bfsu.edu.cn
 * updates: mirrors.bfsu.edu.cn

配置 MongoDB

打开 MongoDB 的配置文件:

sudo vi m/etc/mongod.conf

 

- `bindIp`:绑定的 IP 地址。默认为 `127.0.0.1`,即本地访问,如果需要远程访问需要将其改为 `0.0.0.0`。

- `port`:端口号。默认为 `27017`,根据实际需要修改。

保存退出

执行以下命令启动 MongoDB

 systemctl start mongod

执行以下命令将 MongoDB 设置为系统服务:

[root@localhost ~]#  systemctl enable mongod

可以使用以下命令检查服务的状态:

sudo systemctl status mongod

 使用以下命令登录 MongoDB

[root@localhost ~]# mongo
MongoDB shell version v4.4.22
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("3034ffa1-9092-494c-8749-e03d15836666") }
MongoDB server version: 4.4.22
---
The server generated these startup warnings when booting: 
        2023-06-13T14:25:22.535+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
        2023-06-13T14:25:22.535+08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
        2023-06-13T14:25:22.535+08:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
---
> 

命令

可以使用以下命令检查 MongoDB 的版本:
如果成功安装 MongoDB,则应该输出 MongoDB 的版本号
> db.version()
4.4.22
进入admin数据库:
use admin
> use admin
switched to db admin
创建管理员用户
> db.createUser({ user: "admin", pwd: "123.com", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })
uncaught exception: Error: couldn't add user: User "admin@admin" already exists :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1386:11
@(shell):1:1

其中,`user` 和 `pwd` 分别是要创建的用户的用户名和密码。`roles` 是一个数组,用于指定该用户在哪些数据库中拥有哪些角色。每个角色都由一个 `role` 字段和一个 `db` 字段组成,分别表示角色名称和所属的数据库名称。

exit退出

重启
[root@localhost ~]#  systemctl stop mongod
[root@localhost ~]#  systemctl start mongod
[root@localhost ~]# 

再次使用mongo shell登录到MongoDB,使用以下命令验证登录

[root@localhost ~]# mongo -u admin -p 123.com --authenticationDatabase admin
MongoDB shell version v4.4.22
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b1abfdf6-fdce-4b19-965c-5d7b29293553") }
MongoDB server version: 4.4.22
---
The server generated these startup warnings when booting: 
        2023-06-13T18:16:57.509+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
        2023-06-13T18:16:57.509+08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
        2023-06-13T18:16:57.509+08:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
---

 显示所有数据库的列表

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

选择要使用的数据库。如果该数据库不存在,则会创建一个新数据库

> use local
switched to db local

 在指定集合中插入一个新文档

> db.local.insertOne( { name: "John", age: 30, city: "New York" } )

{

"acknowledged" : true,

"insertedId" : ObjectId("648842bebea94c1f1f347dad")

}

更新指定集合中的一个文档

> db.local.updateOne(
    { name: "John" },
    { $set: { city: "San Francisco" } }
)
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

删除指定集合中的一个文档

> db.local.deleteOne( { name: "John" } )
{ "acknowledged" : true, "deletedCount" : 1 }

创建

> use local  
switched to db local

返回查看指定集合中文档的数量

> db.local.count()
0

创建用户数据库

> use testdb

db.createUser({
  user: "testuser",
   pwd: "123.com",
   roles: [
    { role: "readWrite", db: "testdb" }
   ]
 })
Successfully added user: {
	"user" : "testuser",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "testdb"
		}
	]
}

删除当前使用的数据库

db.dropDatabase()

获取当前使用的数据库的状态信息

 db.stats()


> db.stats()
{
	"db" : "testdb",
	"collections" : 0,
	"views" : 0,
	"objects" : 0,
	"avgObjSize" : 0,
	"dataSize" : 0,
	"storageSize" : 0,
	"totalSize" : 0,
	"indexes" : 0,
	"indexSize" : 0,
	"scaleFactor" : 1,
	"fileSize" : 0,
	"fsUsedSize" : 0,
	"fsTotalSize" : 0,
	"ok" : 1
}

热备份

热备份是在MongoDB处于运行状态下进行备份的一种方式。具体步骤如下

[root@localhost ~]# mongodump --out /data/backup
2023-06-13T18:34:45.382+0800	writing admin.system.users to /data/backup/admin/system.users.bson
2023-06-13T18:34:45.383+0800	done dumping admin.system.users (2 documents)
2023-06-13T18:34:45.384+0800	writing admin.system.version to /data/backup/admin/system.version.bson
2023-06-13T18:34:45.384+0800	done dumping admin.system.version (2 documents)

如果需要对导出的备份数据进行压缩,可以使用以下命令

[root@localhost ~]# tar -czvf backup.tar.gz /data/backup
tar: 从成员名中删除开头的“/”
/data/backup/
/data/backup/admin/
/data/backup/admin/system.users.metadata.json
/data/backup/admin/system.version.metadata.json
/data/backup/admin/system.users.bson
/data/backup/admin/system.version.bson

启动MongoDB服务

[root@localhost ~]#  systemctl start mongod

MongoDB使用mongorestore命令将备份数据还原到MongoDB中。以下是MongoDB备份数据还原的步骤:

需要解压缩MongoDB备份文件。假设备份文件`backup.tar.gz`被解压到了`/data/backup`目录,使用以下命令解压备份文件

[root@localhost ~]# tar -xzvf backup.tar.gz -C /data/backup
data/backup/
data/backup/admin/
data/backup/admin/system.users.metadata.json
data/backup/admin/system.version.metadata.json
data/backup/admin/system.users.bson
data/backup/admin/system.version.bson

使用mongorestore命令将备份数据还原到MongoDB中。以下命令将备份数据恢复到MongoDB

[root@localhost ~]# mongorestore --db mydb /data/backup/
2023-06-13T19:15:56.536+0800	The --db and --collection flags ae deprecated for this use-case; please use --nsInclude instead, ie. with --nsInclude=${DATABASE}.${COLLECTION}
2023-06-13T19:15:56.536+0800	building a list of collections torestore from /data/backup dir
2023-06-13T19:15:56.536+0800	don't know what to do with subdirctory "backup/admin", skipping...
2023-06-13T19:15:56.536+0800	don't know what to do with subdirctory "backup/data", skipping...
2023-06-13T19:15:56.536+0800	0 document(s) restored successfuly. 0 document(s) failed to 

restore.还原备份数据后,重启MongoDB服务

 systemctl start mongod

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/664878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React 组件生命周期

组件的生命周期可分成三个状态: Mounting(挂载):已插入真实 DOMUpdating(更新):正在被重新渲染Unmounting(卸载):已移出真实 DOM Mounting 挂载阶段 Mounting阶段叫挂载阶段,伴随整个虚拟DOM的声明。它里面有四个小的…

Altium Designer软件点击没有反应?如何解决?

对电子工程师来说,Altium Designer(AD)是一款功能强大的PCB设计软件,被广泛应用在电子工程领域。然而在使用过程中可能会遇见AD软件点击没有反应的情况,面对这个问题该如何解决?下面来看看吧! 1…

公网访问Linux CentOS本地搭建的Web站点

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道,指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 转载自cpolar文章:Linux CentOS本地搭建…

videojs-player视频播放技术学习

介绍: videojs是一个开源的HTML5视频播放器,它可以在各种设备和浏览器上播放视频。videojs提供了丰富的API和插件,可以实现自定义的视频播放功能。 使用videojs实现视频播放的步骤: 1. 引入videojs库 在HTML文件中引入videojs库…

chatgpt赋能python:Python打开文件路径:一种更轻松的办法

Python打开文件路径: 一种更轻松的办法 在Python编程中,打开文件路径是非常常见的任务。然而,对于许多初学者,Python打开文件路径时可能会面临一些问题和困难。本篇文章将介绍Python打开文件路径的方法,并给出一种更加轻松的解决…

5-垃圾回收

目录 1.死亡对象的判断算法 1.1.引用计数算法 1.2.可达性分析算法(主流) PS:强引用、软引用、弱引用、虚引用 2.垃圾回收算法 2.1.标记-清除算法 2.2.复制算法 2.3.标记-整理算法 2.4.分代算法(主流) PS&…

达梦体系结构

物理结构、逻辑结构、实例(内存结构、进程结构) 一、物理结构 配置文件、控制文件、数据文件、重做日志文件、归档日志文件、备份文件、跟踪日志文件、事件日志文件 (一)配置文件 以.ini结尾的文件,例如dm.ini (相…

chatgpt赋能python:Python打包成so文件的方法:详解

Python打包成so文件的方法:详解 Python是一种灵活且易于使用的高级编程语言,由于其强大的效率和易于上手的特性,在最近几年已经迅速地流行起来。Python支持多种开发范式,例如函数式编程、面向对象编程和脚本编程。 Python的这些…

【UCOS-III】自我学习笔记→第20讲→时间片调度

文章目录 前言实验步骤1.复制任务创建和删除工程文件并删除task3任务,修改任务1和任务2的优先级为22.修改任务1和任务2的内容3.查看示波器现象 测试代码工程文件总结 前言 无,仅作记录,不具有参考价值,所用开发板为STM32F411RET6…

chatgpt赋能python:Python如何打开电脑摄像头

Python如何打开电脑摄像头 Python是一种易于学习和使用的编程语言,因其灵活性和强大的功能而备受欢迎。其中,许多人使用Python来处理图像处理和计算机视觉,这样,了解如何打开电脑摄像头是非常重要的。 在这篇文章中,…

【高危】crypto-js<3.2.1 存在不安全的随机性漏洞

漏洞描述 crypto-js 是一个 JavaScript 加密库,用于在浏览器和 Node.js 环境中执行加密和解密操作。 crypto-js 3.2.1 之前版本中的 secureRandom 函数通过将字符串 0. 和三位随机整数拼接的格式生成加密字符串,攻击者可通过爆破破解加密字符。 漏洞…

ASEMI代理光宝LTV-M501光耦的特点和应用领域

编辑-Z LTV-M501光耦是一种常用的光电隔离器件,具有高速、高耐压、低功耗等特点。本文将从四个方面对LTV-M501光耦进行详细阐述,包括其结构和工作原理、特点和优势、应用领域以及市场前景。通过对LTV-M501光耦的全面介绍,帮助读者更好地了解…

chatgpt赋能python:Python扩展库扩展名:了解常见的.py、.pyc、.pyd、.so、.dll

Python扩展库扩展名:了解常见的.py、.pyc、.pyd、.so、.dll 如果你是一位Python开发者,你肯定会用到各种各样的库来简化你的代码。在Python中,一个库也称为模块,使用它需要将相应的扩展库引入你的代码中。但你是否曾想过扩展库扩…

C++基础学习(2)

C基础学习 一、运算符重载1.1 加号运算符的重载1.2 左移运算符的重载1.3 递增运算符的重载1.4 赋值运算符的重载1.5 关系运算符的重载 二、继承2.1 继承的基本用法2.2 继承方式2.3 继承当中的对象模型2.4 继承当中的构造和析构函数的顺序2.5 继承同名成员处理方式2.6继承同名静…

希尔排序—C语言实现

目录 前言 希尔排序 发展历史 基本思想 时间复杂度 🥰我们以一组数字来说操作说明: gap的选取 动图演示 代码: 总结: 前言 🥰在学数据结构的第一节课就知道了数据结构课程是要管理并且学会操作数据,…

对应分析——SPSS实例分析

对应分析是R型因子分析和Q型因子分析的结合。本质是将列联表里面的频数数据作变换(通过降维的方法)以后,利用二维图的方式,简单直观的表示行变量和列变量之间的相关性,适合于多分类型变量的研究。数据展示如下&#xf…

20利用灰色神经网络预测6个月订单需求(附matlab程序)

1.简述 学习目标:灰色神经网络预测订单需求 灰色系统理论是一种研究少数据、贫信息、不确定性问题的新方法,它以部分信息已知,部分信息未知的“小样本”,“贫信息”不确定系统为研究对象,通过对“部分”已知信息的生成…

Web服务器群集:部署LNMP平台

目录 一、理论 1.LNMP平台 2.Nginx服务基础 3.Nginx访问控制 4.Nginx虚拟主机 二、实验 1.LNMP架构DISCUZ论坛应用 三、问题 1.没有规则可以创建“default”需要的目标“build”。 四、总结 一、理论 1.LNMP平台 (1)概念 LNMP平台是高效稳定的…

LinkedList(1):链表介绍和单向链表的实现

1 链表介绍 链表的分类:单链表,双链表,循环链表 链表:由链将一个个元素连接,每一个元素我们通常将其称之为Node 节点Node 节点:由两部分组成 数据值的变量 Node next 用来存放下一个节点的Node 对象 pack…

redis zrange 与 zrangebyscore的区别

redis zrange 与 zrangebyscore的区别 目录 redis zrange 与 zrangebyscore的区别前言先说概念上的结论:实验数据准备对比案例一对比结论:对比案例二对比结论: 总结 前言 想做一个在redis中获取数据时分页的功能,从网上查找到了z…