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: filelogAppend: truepath: /var/log/mongodb/mongod.log
#管理系统日志存储是否开启及存储方式和存储位置
②第二个模块
storage:dbPath: /var/lib/mongojournal:enabled: true
#管理系统数据存储位置及是否启用日志
③第三个模块
processManagement:fork: true  # fork and run in backgroundpidFilePath: /var/run/mongodb/mongod.pid  # location of pidfiletimeZoneInfo: /usr/share/zoneinfo
#管理进程运行方式前台/后台运行,pid存储位置以及时区信息
④第四个模块
net:port: 27017bindIp: 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.rhkb.cn/news/78022.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oop基础--成员方法传参机制(重要)

文章目录 1. 基本数据类型的传参机制2. 引用数据类型的传参机制 1. 基本数据类型的传参机制 先让我们猜一下如下代码的输出结果~ public class MethodParameter01 {//编写一个 main 方法public static void main(String[] args) {int a 10;int b 20;//创建 A 对象 名字 obj…

计算机毕设 深度学习疫情社交安全距离检测算法 - python opencv cnn

文章目录 0 前言1 课题背景2 实现效果3 相关技术3.1 YOLOV43.2 基于 DeepSort 算法的行人跟踪 4 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两…

oracle数据库创建用户并插入数据

Oracle第一话 数据库权限设置 序言 ​ 具体的错误类型,我看大概是这样的 一 Oracle比mysql复杂一点 首先,创建一个表空间 -- 创建名为"TEST_DATA"表空间 CREATE TABLESPACE TEST_DATA NOLOGGING -- 数据存放的位置 DATAFILE D:\test_data…

Qt项目---简单的计算器

在这篇技术博客中,我们将介绍如何使用Qt框架实现一个简单的计算器应用。我们将使用C编程语言和Qt的图形用户界面库来开发这个应用,并展示如何实现基本的算术操作。 项目设置 首先,我们需要在Qt Creator中创建一个新的Qt Widgets应用程序项目…

【二进制安全】堆漏洞:Double Free原理

参考:https://www.anquanke.com/post/id/241598 次要参考:https://xz.aliyun.com/t/6342 malloc_chunk 的源码如下: struct malloc_chunk { INTERNAL_SIZE_T prev_size; /*前一个chunk的大小*/ INTERNAL_SIZE_T size; /*当前chunk的…

TPlink DDNS 内网穿透?外网访问设置方法

有很多小伙伴都想知道:TPlink路由器怎么设置DDNS内网穿透?今天,小编就给大家分享一下TPlink DDNS 外网访问设置方法,下面是图文教程,帮助新手快速入门DDNS设置。 本文介绍的是云路由器TP-LINK DDNS的设置方法。TP-LIN…

Keil软件添加STC数据包方法

添加数据包方法如下: (1)首先,打开STC-ISP烧录工具; (2)点击“Keil仿真设置”,然后点击“添加型号和头文件到Keil中,添加STC仿真器驱动到Keil中”。 (3&…

60多行代码仿制B站首页一个好看的卡片效果

文章目录 1、为啥是这个?2、仿制效果3、实现思路4、代码5、查看B站如何实现 1、为啥是这个? 看到Bilibili首页的一个卡片,看着效果很不错,给人很舒适的感觉。一琢磨貌似也不难,甚至只需要一层 div 就可以实现主要框架…

MacBook Pro 16 M1 Max 升级 macOS Ventura 13.5 兼容测评

今天给大家带来了 MacBook Pro 16 M1 Max 升级 macOS Ventura 13.5 兼容 100 挑战赛 的视频,现在充电头再以文章的形式呈现给大家,让大家更清楚、直白的了解这款笔记本在升级系统后的兼容性如何。 MacBook Pro 16 M1 Max 配置了 140W 的 MagSafe 充电口&…

mybatisJava对象、list和json转换

1. 参考mybatis-plus mybatis Java对象、list和json转换 网上好多不靠谱,参考mybatis-plus中TableField,mybatis中自定义实现 这样不需要对象中属性字符串接收,保存到表中,都是转义字符,使用时还要手动转换为对象或者…

【Opencv入门到项目实战】(四):图像梯度计算|Sobel算子|Scharr算子|Laplacian算子

文章目录 0.引言1. Sobel算子2. Scharr算子3. Laplacian算子 0.引言 在图像处理中,梯度是指图像中像素灰度变化的速率或幅度,我们先来看下面这张图 假设我们想要计算出A点的梯度,我们可以发现A点位于边缘点,A点左边为黑色&#x…

骨传导耳机真不伤耳吗?骨传导耳机有什么好处?

骨传导耳机真不伤耳吗?骨传导耳机有什么好处? 我先来说说骨传导耳机的工作原理吧,骨传导是一种传声方式,声波通过颅骨、颌骨等头部骨头的振动,将声音传到内耳。其实骨传导的现象我们很常见,就像我们平时嗑瓜…

Qt5.13引入QtWebApp的模块后报错: error C2440: “reinterpret_cast”: 无法从“int”转换为“quintptr”

1、开发环境 Win10-64 qt5.13 msvc2015-64bit-release 2、报错 新建一个demo工程。 引入QtWebApp的httpserver、logging、templateengine三个模块后。 直接运行,,此时报错如下: E:\Qt5.13.1\install\5.13.1\msvc2015_64\include\QtCore…

测试工程师的工作

目录 1.何为软件测试工程师? 2.软件测试工程师的职责? 3.为什么要做软件测试? 4.软件测试的前途如何? 5.工具和思维谁更重要? 6.测试和开发相差大吗? 7.成为测试工程师的必备条件 8.测试的分类有哪…

【chrome扩展开发】vue-i18n使用问题及解决方案

记录chrome扩展开发时调用vue-i18n的一些问题和解决方法 环境 vue: ^3.3.4vue-i18n: ^9.2.2vite: ^4.4.8 错误1 Uncaught (in promise) EvalError: Refused to evaluate a string as JavaScript because unsafe-eval is not an allowed source of script in the following Con…

阿里云平台注册及基础使用

首先进入阿里云官网: 阿里云-计算,为了无法计算的价值 点击右上角“登录/注册”,如果没有阿里云账号则需要注册。 注册界面: 注册完成后需要开通物联网平台公共实例: 注册成功后的登录: 同样点击右上角的…

python与深度学习(十四):CNN和IKUN模型二

目录 1. 说明2. IKUN模型的CNN模型测试2.1 导入相关库2.2 加载模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章IKUN模型训练的模型进行测试。…

el-select控制单选还是多选

<el-form :inline"true" :model"form" class"demo-form-inline"><el-form-item><el-select v-model"form.properties_id" placeholder"请选择样品性质" clearable :multiple"multiple_properties"…

Linux 系统编程 开篇/ 文件的打开/创建

从本节开始学习关于Linux系统编程的知识&#xff01; 学习Linux的系统编程有非常多的知识点&#xff0c;在应用层面&#xff0c;很重要的一点就是学习如何“用代码操作文件来实现文件创建&#xff0c;打开&#xff0c;编辑等自动化执行” 那如何自动化实现对文件的创建&#…

GitHub上删除项目后,IDEA分享项目到GitHub提示Remote is already on GitHub

文章目录 一、错误信息二、解决方法1.删除GitHub上的项目2.找到项目里的.git隐藏文件3.找到config文件4.打开config文件&#xff0c;删除[remote "git-test"]及下面两行内容5.继续使用IDEA分享项目到GitHub即可 一、错误信息 二、解决方法 1.删除GitHub上的项目 2.…