MongoDB 数据库

目录

一、概述

二、相关概念

三、特性

四、应用的场景

五、安装及配置文件操作

一、首先配置好环境

二、安装

三、查看端口号

四、查看配置文件

五、查询已安装的软件包 

六、树状图解析

六、默认数据库(默认有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 中,并且所有的文档都成功导入了,没有任何导入失败的文档。

 

 提示成功

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

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值