MongoDB 数据库

news2025/1/13 9:44:00

目录

一、概述

二、相关概念

三、特性

四、应用的场景

五、安装及配置文件操作

一、首先配置好环境

二、安装

三、查看端口号

四、查看配置文件

五、查询已安装的软件包 

六、树状图解析

六、默认数据库(默认有admin、local、config三个)

一、admin

二、local

三、config

 七、数据库操作

一、树状图

二、登录数据库 mongo

三、查看数据库 show dbs

四、切换数据库及操作

八、插入数据

一、树状图及解释

二、单行插入

三、查看

         四、多行插入

 九、更新数据

十、 MongoDB数据库备份与恢复

一、备份命令

一、mongodump

二、mongoexport

二、恢复命令

一、mongorestore

二、mongoimport


一、概述

mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON

二、相关概念

实例:系统上运行的mongodb的进程,类似于mysql实例;

库:每个数据库都是独立的,有自己的用户,权限,独立存储集合,类似于mysql的库;

 集合:由一组文档构成,类似于mysql的表;

 文档:mongodb数据库的最小数据集,是由多个键值对有序组合的数据单元,类似于mysql的数据记录;

主键     唯一标识一行数据

三、特性

        1、面向集合文档存储,适合存储json形式的数据;

        2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行;

        3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句;

        4、有索引的支持,查询效率更快;

        5、支持复制和自动故障转移;

        6、可以使用分片集群提升查询性能

四、应用的场景

游戏

物流

社交

物联网

视频直播

大数据

五、安装及配置文件操作

一、首先配置好环境

配置yum源、关闭防火墙宽容模式、使其可以联网ping通百度,访问百度

配置好后输入 ip a查看网卡地址

二、安装

cd /etc/yum.repos.d 路径下输入 

vim mongo.repo

在里面添加内容

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

 配置完成后、安装 mongodb-org

 安装vim

三、查看端口号

安装后 启动数据库

systemctl start mongod

查看端口号

netstat -anptu | grep mongod

 监听端口号27017

四、查看配置文件

rpm -ql mongodb-org (MongoDB数据库没有提供路径,需要手动更改)

配置文件的所在路径 ect/mongod.conf

7      是系统日志

8      目标文件类型

9      允许往里面写入日志

10    存放路径

13    存储

14    路径

15    控制日志命令

16    系统日志功能已启动

21    进程管理

22    如何产生后台子进程(fork是产生进程的一种方式)

23    对应的PID文件存放位置

24    当前的时区配置文件存放位置

 进入时区文件查看,时区要是相应所在国家的时间

 

 网络配置

 

五、查询已安装的软件包 

 查询server

 查询shell

 查询mongos

 

 查询tools

 六、树状图解析

六、默认数据库(默认有admin、local、config三个)

一、admin

从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。
一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。

二、local

这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。

三、config

当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

备注:如果想要创建个数据库默认要创建到admin中,只要用户能操作admin,就具有管理数据库的权限

 七、数据库操作

一、树状图

 二、登录数据库 mongo

输入直接登录

三、查看数据库 show dbs

 四、切换数据库及操作

use 库名称

如果库名称不存在时会隐式创建,隐式创建无法查询,只有创建集合后可以成功查询

因为没有jx 所以无法正常查询到

创建集合输入 db.createCollection("test")

再次查询成功

 删除数据库

首先查看自己在哪个数据库中 输入db查看

然后输入 db.dropdatabase() 并验证

 成功删除数据库

切换数据库并创建集合

现在成功的创建了一个名为info的集合

删除集合

语法   db.需要删除的集合名称.drop()

 成功删除

再次创建并查看内容

提示创建成功

多用户创建并删除

八、插入数据

一、树状图及解释

 数组是计算机编程中的一种数据结构,用于存储一组相同类型的数据。数组可以包含任意数量的元素,每个元素在数组中都有一个唯一的索引,通过索引可以访问或修改数组中的元素。数组的长度在创建时确定,并且在创建后不可更改。数组的元素可以是整数、浮点数、字符、字符串或其他数据类型。使用数组可以方便地在程序中存储和操作大量的数据。

二、单行插入

 成功写入

三、查看

默认会多出一个ID,自动创建个主键

 四、多行插入

添加数据 db.info1.insertMany([{'san':'123'},{'si':'1234'},{'wu':'12345'}])   包含数组

 find查找

查询 如果输入这个命令查看 

则全部存在 

如果我想指显示id而不显示张三的名字需要

 输入  db.info1.find({'zhangsan':'123.com'},{'zhangsan':0})

验证

模拟用户信息创建的信息

名称     密码     电话     邮箱     密保问题     密保答案

 db.info1.insert({'username':'jx','password':'123.com','phone':'110','email':'111@qq.com','question':'1','answer':'qunide'})

提示写入成功 在info集合中添加了一个文档

 查找密码是多少

 但是他会显示id,如果不让他显示id

 则成功只显示密码

如果 写成db.info1.find({'username':'jx'},{'_id':0}) 则是除了id都显示 

 条件删除

查看验证

 九、更新数据

 输入

 db.info1.insert({'_id':NumberInt(3),'username':'jx2','password':'123.com','phone':'110','email':'111@qq.com','question':'1','answer':'qunide'})

查看 

db.info1.find()

 更改 db.info1.update({'_id':3},{$set:{'username':'jx02'}})

这是一条数据库操作的代码,用于更新集合info1中 _id 值为3的文档(数据记录)。具体来说,这条代码的作用是将该文档中的 ‘username’ 字段的值从 ‘jx2’ 更新为 ‘jx02’。

使用 $set 操作符可以更新文档中的指定字段值,而保留其他字段不变。在这个例子中,{$set: {'username': 'jx02'}} 表示更新 ‘username’ 字段的值为 ‘jx02’。

通过执行这条代码,你可以将符合条件的文档中的 ‘username’ 字段进行更新,使其值为 ‘jx02’。

 显示结果翻译

 { "_id" : 3, "username" : "jx02", "password" : "123.com", "phone" : "110", "email" : "111@qq.com", "question" : "1", "answer" : "qunide" }

这段内容是一个文档(document)的示例。在MongoDB中,文档是最基本的数据单位,类似于关系型数据库中的行(row)。每个文档都由一组键值对(key-value pairs)组成,键(key)是字符串,值(value)可以是各种数据类型,如字符串、数字、布尔值、数组、嵌套文档等。

这个文档示例包含了以下字段:

  • "_id":文档的唯一标识符,可以是任意类型,默认情况下为ObjectId类型。
  • "username":用户名,值为"jx02"。
  • "password":密码,值为"123.com"。
  • "phone":电话号码,值为"110"。
  • "email":电子邮件地址,值为"111@qq.com"。
  • "question":安全问题,值为"1"。
  • "answer":安全问题的答案,值为"qunide"。

这个文档表示了一个用户的信息,包括用户名、密码、联系方式和安全问题答案等。

 所有满足条件的文档进行更新(满足phone的所有的邮箱都更改)

输入  db.info1.update({'phone':'110'},{$set:{'email':'222@qq.com'}},{multi:true})
提示更改成功

 查看 db.info1.find()

如果不输入全了 只输入 db.info1.update({'phone':'110'},{$set:{'email':'333@qq.com'}})

则提示只更改一条

更新文档进行数值递增

 需要创建一个userID

 db.info1.insert({'userId':NumberInt (1),'username':'jx2','password':'123.com','phone':'110','email':'111@qq.com','question':'1','answer':'qunide'})

然后输入

db.info1.update({'userId': 1},{$inc:{userId:NumberInt(100)}})

 

提示该命令成功执行,并在数据库中修改了一份文档。

  db.info1.find()   查看

 如果是-10

输入

 db.info1.update({'userId': 1},{$inc:{userId:-10}})

该命令的作用是在名为info1的集合中查找userId为1的文档,并将该文档的userId字段的值减去10。

 查看

如果是+10的话 输入  db.info1.update({'userId': 1},{$inc:{userId:10}})

显示11

 

 加1000的话  db.info1.update({'userId': 11},{$inc:{userId:1000}})

 提示

十、 MongoDB数据库备份与恢复

一、备份命令

一、mongodump

备份整个数据库的数据

-d   指定数据库名称

-h  指定主机

-u 什么用户登录

-p 指定密码

命令mongodump -d jx -o /opt/jx.sql的作用是将名为"jx"的数据库中的数据进行备份,并将备份文件存储在/opt/jx.sql目录中。

具体解释如下:

  • mongodump是MongoDB提供的用于备份数据库的命令。
  • -d jx表示要备份的数据库名为"jx"。可以根据实际情况将"jx"替换为要备份的数据库名。
  • -o /opt/jx.sql表示备份文件的输出目录为/opt/jx.sql。可以根据需要指定其他目录。
  • 备份文件将被以二进制格式存储,并在指定的目录中创建一个包含备份数据的文件夹(文件夹名为数据库名)。
  • 备份文件不是以.sql为后缀,而是根据MongoDB的备份格式进行存储。

删除数据库

删除成功 

二、mongoexport

导出文档

Mongoexport 是用于将 MongoDB 数据导出到一个文件中备份的工具。它允许用户定义查询条件来选择要导出的数据集合,并且可以选择性地导出指定字段。导出的数据可以作为备份,以便在需要时恢复或迁移到其他 MongoDB 数据库中。

 输入    mongoexport -d jx -c info1 -o /opt/jx_info1   备份

mongoexport 是 MongoDB 的一个命令行工具,用于导出 MongoDB 数据到指定格式的文件。

在给定命令中,-d jx 表示要导出的数据库名称是 jx-c info1 表示要导出的集合名称是 info1-o /opt/jx_info1 表示要将导出的数据保存到 /opt/jx_info1 文件中。

换句话说,命令的含义是将数据库 jx 中的集合 info1 的数据导出并保存到 /opt/jx_info1 文件中。

 这个输出表明成功地使用 mongoexport 命令从 MongoDB 中的特定数据库和集合导出了8条记录。

二、恢复命令

一、mongorestore

恢复数据库命令

 数据库恢复

mongorestore -d jx -c info1 /opt/jx.sql/jx/info1.bson

 提示恢复成功

 这段日志是有关数据库恢复操作的信息。它显示了检查并读取了一个叫做jx.info1的集合的数据,并成功地从指定路径中的备份文件中还原了8个文档。此外,它还指出没有需要还原的索引。最后,它显示了成功还原了8个文档,并且没有失败的还原操作。因此,整个恢复过程是成功的。

成功恢复

 

二、mongoimport

导入文档

隐式创建个新的库,将备份的文档内容导入到库中

 mongoimport -d jx1 -c info /opt/jx_info1

 

根据给定的输出信息,可以得知以下内容:

  • 时间戳 2023-08-15T10:39:24.284+0800:表示连接到 MongoDB 的时间。
  • 连接信息 mongodb://localhost/:表示连接到本地的 MongoDB 实例。
  • 成功导入文档数量 8 document(s) imported successfully.:表示成功导入了 8 个文档。
  • 失败导入文档数量 0 document(s) failed to import.:表示没有文档导入失败。

这个输出表明成功地使用 mongoimport 命令将 /opt/jx_info1 文件中的数据导入到了数据库 jx1 中的集合 info 中,并且所有的文档都成功导入了,没有任何导入失败的文档。

 

 提示成功

一般导出文档的形式,是做数据迁移时使用

 

 

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

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

相关文章

Java后端开发面试题篇——Redis

Redis的数据持久化策略有哪些 RDB的执行原理? bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。 fork采用的是copy-on-write技术: 当主进程执行读操作时,访问共享内存…

SQL-每日一题【1587. 银行账户概要 II】

题目 表: Users 表: Transactions 编写解决方案, 报告余额高于 10000 的所有用户的名字和余额. 账户的余额等于包含该账户的所有交易的总和。 返回结果表单 无顺序要求 。 查询结果格式如下例所示。 示例 1: 解题思路 1.题目要求我们查询出额高于 10000 的所有…

Yalmip入门教程(5)-约束条件操作的相关函数

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译:https://yalmip.github.io/tutorials/ 这篇博客将详细介绍yalmip工具箱中约束条件操作相关函数的用法。 1.约束条件操作的相关函数 1.1 boundingbox函数 boundingbox函数用于求出一组约…

Java基本变量

概念: 本质上来说变量是内存中的一小块区域,通过变量名来访问这块区域。因此,使用每一个变量前必须要先申请(声明)然后必须对其进行赋值,才能使用。 基本数据类型(在栈stack中) 整…

【从0开始学架构笔记】01 基础架构

文章目录 一、架构的定义1. 系统与子系统2. 模块与组件3. 框架与架构4. 重新定义架构 二、架构设计的目的三、复杂度来源:高性能1. 单机复杂度2. 集群复杂度2.1 任务分配2.2 任务分解(微服务) 四、复杂度来源:高可用1. 计算高可用…

Python爬虫解析工具之xpath使用详解

文章目录 一、数据解析方式二、xpath介绍三、环境安装1. 插件安装2. 依赖库安装 四、xpath语法五、xpath语法在Python代码中的使用 一、数据解析方式 爬虫抓取到整个页面数据之后,我们需要从中提取出有价值的数据,无用的过滤掉。这个过程称为数据解析&a…

网络技术Vlan技术STP(第一课)

一 Vlan技术的学习 对命令的增删改查 #### 1)创建vlan[SW1]vlan 2 [2-4094] 创建vlan[SW1]vlan batch 10 20 30 创建多个不连续的vlan[SW1]display vlan 查看vlan信息[SW1]vlan batch 50 to 60创建多个连续的vlan[SW1]vlan2[SW1-vlan2]description caiwu添加描述信…

基于决策树(Decision Tree)的乳腺癌诊断

决策树(DecisionTree)学习是以实例为基础的归纳学习算法。算法从--组无序、无规则的事例中推理出决策树表示形式的分类规则,决策树也能表示为多个If-Then规则。一般在决策树中采用“自顶向下、分而治之”的递归方式,将搜索空间分为若千个互不相交的子集,在决策树的内部节点(非叶…

AutoSAR配置与实践(基础篇)3.3 BSW的通信功能

传送门 -> AUTOSAR配置与实践总目录 AutoSAR配置与实践(基础篇)3.3 BSW的通信功能 一、收发过程概览1.1 发送过程概览1.2 接收过程概览 二、BSW的通信功能模块组成三、收发过程解析3.1 发送过程3.2 发送后的结果确认3.3 接收过程 一、收发过程概览 1…

图像编程补充:计算机图形学和数字图像处理概念

一、计算机图形学 国际标准化组织(ISO)的定义:计算机图形学是研究通过计算机将数据转换为图形,并在专门显示设备上显示的原理、方法和技术的学科。 1.1什么是计算机图形学 图形的构成要素: 图形的广义概念&#xff1…

TCP拥塞控制简单理解

1.TCP的控制机制 序号 TCP通过序号可以实现一下几个功能: 1.确认应答处理。发送端收到接收端的确认应答,可以得知某些数据包被接收端接收了 2.顺序控制。接收端可以利用序号对接收到的报文进行排序 3.重发控制。如果发送端没有收到确认应答&#xff0c…

【MT32F006】MT32F006之定时器延时

本文最后修改时间:2023年03月30日 一、本节简介 本文介绍如何使用MT32F006的定时器做us、ms级的延时。 二、实验平台 库版本:V1.0.0 编译软件:MDK5.37 硬件平台:MT32F006开发板(主芯片MT32F006) 仿真器…

【C语言】每日一题(找到所有数组中消失的数字)

找到所有数组中消失的数字,链接奉上。 这里简单说一下,因为还没有接触到动态内存,数据结构,所以知识有限,也是尽力而为,结合题库的评论区找到了适合我的解法,以后有机会,会补上各种…

麻辣烫数据可视化,麻辣烫市场将持续蓬勃发展

麻辣烫,这道源自中国的美食,早已成为人们生活中不可或缺的一部分。它独特的香辣口味,让人忍不住每每流连忘返。与人们的关系,简直如同挚友一般。每当寒冷的冬日或疲惫的时刻,麻辣烫总是悄然走进人们的心房,…

Winload.efi丢失或损坏怎么办?

Winload.efi是一个EFI(或可扩展固件接口)文件。可执行的EFI文件适用于基于计算机系统的UEFI,并将文件加载到计算机引导加载程序的执行任务。它们包含有关操作系统引导过程应如何进行的重要数据。因此,Winload.efi文件对于成功启动…

大数据Flink学习圣经:一本书实现大数据Flink自由

学习目标:三栖合一架构师 本文是《大数据Flink学习圣经》 V1版本,是 《尼恩 大数据 面试宝典》姊妹篇。 这里特别说明一下:《尼恩 大数据 面试宝典》5个专题 PDF 自首次发布以来, 已经汇集了 好几百题,大量的大厂面试…

第一章 初识Linux(含VMware安装Ubuntu、CentOS、Windows、FinalShell、快照)

目录 一、 课程的介绍  1.为什么要学习Linux  2.课程的安排  3.如何学习Linux 二、操作系统概述  1.学习目标  2.计算机的硬件和软件  3.什么是操作系统  4.常见的操作系统  5.本小节的总结 三、初识Linux  1.学习目标  2.Linux的诞生  3.Linux的内核  …

CentOS下MySQL的彻底卸载的几种方法

这里我为大家详细讲解下“CentOS下MySQL的彻底卸载的几种方法”的完整攻略。 一、关闭MySQL服务 在开始操作之前,需要先关闭MySQL服务。可以使用以下命令来关闭MySQL服务: systemctl stop mysqld 或者 service mysqld stop 二、使用yum命令卸载MySQL…

Oracle的学习心得和知识总结(二十七)|Oracle数据库数据库回放功能之论文一翻译及学习

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《Oracle Database SQL Language Reference》 2、参考书籍:《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

Kotlin开发笔记:集合和逆变协变

Kotlin开发笔记:集合和逆变协变 Kotlin中的集合 基本的集合类型 Kotlin中的集合类型和Java差不多,不过有些在名称上可能有出入,下面是Kotlin中的一些基本集合类型: 类型介绍Pair两个值的元组Triple三个值的元组Array经过索引的…