NOsql之MongoDB入门分享

目录

一、MongoDB简介

1、概念理解

2、yum安装部署

3、二进制安装部署

4、配置文件解析 

二、MongoDB基本管理

1、登录操作

2、管理命令

3、用户管理


一、MongoDB简介

1、概念理解

关系型数据库(RDBMS:Relational Database Management System)
MySql、Oracle、DB2、SQL Server…关系型数据库中全都是表
非关系型数据库(No Sql --Not only sql)(Sql:结构化查询语言)
MongoDB(文档数据库,json格式)、Redis…键值对数据库

Mongodb逻辑结构              MySQL逻辑结构
   库database       ======       库
   集合(collection) ======       表
   文档(document)   ======       数据行

2、yum安装部署

vim /etc/yum.repo.d/mongodb.repo
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
#添加mongodb的yum源
yum  install -y mongodf-org
#直接yum安装
systemctl  start mongod
#启动mongod服务
mongo
#本地直接登录mongodb数据库

3、二进制安装部署

useradd mongod
passwd mongod
#创建用户
mkdir -p /data
mkdir -p /mongodb/conf
mkdir -p /mongodb/log
mkdir -p /mongodb/data
#创建MongoDB需要的目录
cd   /data
tar xf mongodb-linux-x86_64-rhel70-3.6.12.tgz 
cp -r /data/mongodb-linux-x86_64-rhel70-3.6.12/bin/ /mongodb
#上传压缩包并解压到指定目录,安装包官网下载网址:https://www.mongodb.com/
chown -R mongod:mongod /mongodb
#配置目录权限给mongod用户
su - mongod
vi .bash_profile
export PATH=/mongodb/bin:$PATH
source .bash_profile
#登录mongod用户配置环境变量
mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --fork 
#启动mongod服务并指定log文件和端口等
mongo
#本地直接登录mongodb数据库

4、配置文件解析 

yum配置文件位置:/etc/mongod.conf
vim /etc/mongd.conf
①第一个模块
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
#管理系统日志存储是否开启及存储方式和存储位置
②第二个模块
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
#管理系统数据存储位置及是否启用日志
③第三个模块
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo
#管理进程运行方式前台/后台运行,pid存储位置以及时区信息
④第四个模块
net:
  port: 27017
  bindIp: 0.0.0.0
#管理网络的监听端口和监听地址
⑤第五个模块
security:
  authorization: enabled
#安全模块管理是否开启安全认证,开启后需要验证账户密码和验证库,否则无进入无操作权限

二、MongoDB基本管理

1、登录操作

mongo
#直接本地用户登录
mongo    -uroot    -proot123    192.168.30.17/admin
#root用户远程登录mongodb,-u指定用户,-p指定密码 192.168.30.17mongodb的地址,admin为验证库(远程登录用户不指定验证库即使登录成功也无法进行操作)

2、管理命令

①库级别命令操作
db.help()
#查看库帮助,help()可以理解为函数操作时可以像命令一下使用tab补全
use test(库名)
#进入test库如果没有此库则自动创建,注意若库中无集合则切换到其他库后会自动删除此库
show   databases
show   dbs
#查看有哪些库
db.createCollection("集合名")
#表中创建集合
②表(集合)级别命令操作
db.集合.help()
#查看集合帮助,help()可以理解为函数操作时可以像命令一下使用tab补全
show    tables
#查看库中有哪些集合
db.集合.insert({键1:"值1",键2:"值2",等...})
#集合中添加数据,如果没有此集合则自动创建此集合并将文档写入集合中,json格式
db.集合.find({})
#查看集合中的内容,可以在({})中写筛选条件例如db.log1.find({id:"2"})查看log1集合中的id为2的文档
DBQuery.shellBatchSize=数量;
#db.集合.find({})默认是20行文档为1页,输入it则看下一页内容。此函数可以调整每页显示的数量如数量除配置50则没页显示50行文档输入it则看下一页内容
db.集合.find({}).pretty()
#加.pretty()可以更完美的展示,以json文档格式显示出集合中的数据
db.集合.findOne({})
#只查看集合的第一行文档
db.集合.count({})
#统计集合中有多少行文档,会输出一个值则为文档数
db.集合.remove({})
#删除集合中所有文档但不删除集合,可以({})中写筛选条件例如db.log1.remove({id:"1"})删除log1集合中id为1的文档
db.集合.drop()
#删除整个集合包括其中的文档
db.旧集合名.renameCollection("新集合名")
#修改集合名称
③系统命令级别
db
#查看当前处于那个库
db.集合.stats()
#查看集合存储信息
db.集合.dataSize()
#查看集合中数据的原始大小
db.集合.totalIndexSize()
#查看集合中索引数据的原始大小

3、用户管理

 验证库:MongoDB的特殊安全验证,开启后远程登录除了输入账户密码外还需要在远程登录的ip后跟上验证库否则无法对库进行正常操作。

用户权限:必须use到某个库创建用户,一般管理那个库就use到哪个库创建用户,管理员用户除外(一般管理员用户在admin库创建)。权限分配角色管理,一共三种包括管理员(root)、只读(read)、可读可写(readWrite)

①创建管理员用户
use    admin
#进入验证库,管理员用户的验证库一般为admin库
db.createUser(
{
    user:"test01",
    pwd:"test123",
    roles:[ {role:"root",db:"admin"}]
}
)
#创建一个test01的系统用户,密码为test123,角色权限为root管理员,管理库为admin
#若创建其他普通用户则进入所管理的库作为验证库,分配权限时给read只读或readWrite
②创建一个普通用户管理多个库并对多个库拥有不通权限
use    test02
#建议以权限更高的管理库为验证库,以其他库为验证库也可
db.createUser(
{
    user:"test02",
    pwd:"test123",
    roles:[{role:"readWrite",db:"test02"},{role:"read",db:"test01"}]
}
)
#创建普通用户test02对test02库有可读可写权限,test01库只有可读权限
db.dropUser("用户名")
#删除用户,注意要在对应的验证库中删除用户
use    admin
show    tables
db.s

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动态规划之树形DP

动态规划之树形DP 树形DP何为树形DP 树形DP例题HDU-1520 Anniversary partyHDU-2196 Computer834. 树中距离之和 树形DP 何为树形DP 树形DP是指在“树”这种数据结构上进行的动态规划:给出一颗树,要求以最少的代价(或取得最大收益&#xff…

uniapp实现地图点聚合

点聚合的最重要的一个地方是在 markers 中添加 joinCluster true 这个重要的属性,否则将无法开启点聚合功能。 其实在uniapp的官方文档里体现的不是那么清楚,但是在小程序文档提示的就相当清楚。 实现效果如下: 重点:需要编译在小…

git下载太慢

git官网下载git太慢 阿里git地址 下载适合自己的版本

HTTP请求走私漏洞简单分析

文章目录 HTTP请求走私漏洞的产生HTTP请求走私漏洞的分类HTTP请求走私攻击的危害确认HTTP请求走私漏洞通过时间延迟技术确认CL漏洞通过时间延迟技术寻找TE.CL漏洞 使用差异响应内容确认漏洞通过差异响应确认CL.TE漏洞通过差异响应确认TE.CL漏洞 请求走私漏洞的利用通过请求漏洞…

ARTS 挑战打卡的第1天 --- Linux驱动与设备的匹配规则(Tips)

前言 (1)因为在Linux驱动开发中,驱动可以和设备c文件文件进行匹配,也可以和设备树dts文件进行匹配。为了弄明白驱动与他们的匹配规则,我查阅了一些资料同时阅读了源码,最终打算使用图片的方式形象具体的写成…

FFmpeg5.0源码阅读——av_interleaved_write_frame

摘要:本文主要详细描述FFmpeg中封装时写packet到媒体文件的函数av_interleaved_write_frame的实现。   关键字:av_interleaved_write_frame   读者须知:读者需要熟悉ffmpeg的基本使用。 1 基本调用流程 av_interleaved_write_frame的基本…

matlab使用教程(6)—线性方程组的求解

进行科学计算时,最重要的一个问题是对联立线性方程组求解。在矩阵表示法中,常见问题采用以下形式:给定两个矩阵 A 和 b,是否存在一个唯一矩阵 x 使 Ax b 或 xA b? 考虑一维示例具有指导意义。例如,方程 …

Redis - 缓存的双写一致性

概念: 当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致 那为什么会有不一致的情况呢? 如果不追求一致性,正常有两种做法 先修改数据库 后删除旧的缓存先删除旧的缓存 再修改数据库 我们以先删除旧的…

【玩转pandas系列】数据清洗(文末送书福利)

文章目录 一、重复值检测二、元素替换1️⃣ 元素替换replace2️⃣ 数据映射map 三、修改索引1️⃣ 修改索引名rename2️⃣ 设置索引和重置索引 四、数据处理1️⃣ apply与applymap2️⃣ transform 五、异常值处理六、抽样聚合函数1️⃣ 抽样2️⃣ 数学函数 七、分组聚合&#x…

数字世界未来十年面貌如何?

随着科技的不断发展和创新,数字世界将在未来十年迎来一系列革命性的变化和进步。以下是数字世界未来十年面貌的一些预测: 人工智能全面普及:人工智能将逐渐渗透到我们生活的方方面面。从智能家居到智能交通,从个性化医疗到智能零售…

用python编写一个小程序,如何用python编写软件

大家好,给大家分享一下用python编写一个小程序,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 1、python可以写手机应用程序吗? 我想有人曲解意思了,人家说用python开发渣蔽一个手机app,不是…

零基础C#编写上位机如何入门?

学习C#基础语法和.NET框架,掌握基本编程概念和语法,例如数据类型、类、对象、继承、多态、异常处理等。学习WinForm窗体应用程序开发技术,掌握窗体应用程序的设计和开发,例如控件的使用、事件驱动编程、窗体的布局与设计等。学习数…

《向量数据库指南》——Milvus Cloud 2.3 和 2.4 版本的重要变化

Milvus Cloud2.3 和 2.4 版本的重要变化。 首先是 Milvus Cloud2.3 将支持 Json 数据类型,在此基础上亦会支持 Schemaless。此前,用户在使用 Milvus Cloud的过程中会先定一个静态 Schema,此时,如果在实际业务层面如果多了几个 feature 或者 Metadata,就意味着数据需要重新…

什么是架构 架构图

如何成为一名架构师,架构师成长之路_golang架构师成长之路_个人渣记录仅为自己搜索用的博客-CSDN博客 如何画架构图_个人渣记录仅为自己搜索用的博客-CSDN博客 如何画好一张架构图?(内含知识图谱) - 知乎 什么是架构?要表达的到…

代码随想录算法训练营第二十八天 | Leetcode随机抽题检测

Leetcode随机抽题检测--使用题库:Leetcode热题100 1 两数之和未看解答自己编写的青春版重点题解的代码日后再次复习重新写 49 字母异位词分组未看解答自己编写的青春版重点题解的代码日后再次复习重新写 128 最长连续序列未看解答自己编写的青春版重点关于 left 和 …

黑客技术(网络安全)学习笔记

一、网络安全基础知识 1.计算机基础知识 了解了计算机的硬件、软件、操作系统和网络结构等基础知识,可以帮助您更好地理解网络安全的概念和技术。 2.网络基础知识 了解了网络的结构、协议、服务和安全问题,可以帮助您更好地解决网络安全的原理和技术…

Qt 2. QSerialPortInfo显示串口信息

在ex2.pro 添加&#xff1a; QT serialport//main.cpp #include "ex2.h" #include <QtSerialPort/QtSerialPort> #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Ex2 w;w.show();QList<QSerialPortInfo>…

出海拍|疯了!ChatGPT 大规模封号,有钱还不赚?

时代洪流裹挟命运流转&#xff0c;世事变迁暗藏跨境沉浮。 几个月前&#xff0c;OpenAI的创始人之一马斯克曾在社交媒体平台上称赞ChatGPT &#xff1a;“Its a new world. Goodbye homework!”而他所说的ChatGPT 引领着许多AI工具&#xff0c;随后便开始如雨后春笋般出现在我…

刷题学算法

刷题学算法 数据结构 一、数组 1. 数组创建&#xff1a; // 方式1&#xff1a;先创建&#xff0c;再逐个存储元素 String[] cityArray1 new String[5]; cityArray1[0] "北京"; cityArray1[1] "上海"; cityArray1[2] "广州"; cityArray1[3…

【RabbitMQ(day4)】SpringBoot整合RabbitMQ与MQ应用场景说明

一、SpringBoot 中使用 RabbitMQ 导入对应的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>配置配置文件 spring:application:name: rabbitmq-springbo…
最新文章