NOsql之MongoDB入门分享

news2024/9/23 17:22:16

目录

一、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.coloradmin.cn/o/823435.html

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

相关文章

YOLO实战1.2-YOLOV5人脸检测

上个项目实现了车牌的检测和识别,这次实现一个简单的人脸检测(加口罩)项目 一.数据集 使用1200张图片进行训练 400张进行测试 二.各项指标 三.效果

SpringCloud Gateway 在微服务架构下的最佳实践

作者:徐靖峰(岛风) 前言 本文整理自云原生技术实践营广州站 Meetup 的分享,其中的经验来自于我们团队开发的阿里云 CSB 2.0 这款产品,其基于开源 SpringCloud Gateway 开发,在完全兼容开源用法的前提下&a…

云服务器开放端口

文章目录 云服务器开放端口1. 云服务器后台开放端口2. linux系统开放端口2.1 查看防火墙状态2.2 开启防火墙2.3 开放端口(以端口2000为例)2.4 重新载入防火墙2.5 查看已开放的端口2.6 重启防火墙2.7 关闭端口 云服务器开放端口 本篇文章主要以阿里云服务…

Pandas.rank() 函数详解

文章目录 Pandas.rank() 函数详解一、参数解析二、案例分享默认排名降序: ascending Falsemethod minmethod maxmethod firstmethod densena_optionbottompct True Pandas.rank() 函数详解 一、参数解析 method:指定排名时的策略。 默认值为 average&#x…

[python]conda激活环境后pip -V显示在base路径

正常激活环境后pip -V是在激活环境路径,比如 但是我的突然确为 D:\anaconda3\lib\site-packages里面,百思不得其解,后来发现是我在环境变量加了PYTHONHOME环境变量,如果你的环境变量有PYTHONHOME或者PYTHONPATH请删掉试试。 此外…

Java并发系列之二:悲观锁机制

什么是锁 在并发环境下,会出现多个线程对同一个资源进行争抢的情况,假设A线程对资源正在进行修改,此时B线程此时又对资源进行了修改,这就可能会导致数据不一致的问题。为了解决这个问题,很多编程语言引入了锁机制&…

Stephen Wolfram:机器学习与神经网络训练

Machine Learning, and the Training of Neural Nets 机器学习与神经网络训练 We’ve been talking so far about neural nets that “already know” how to do particular tasks. But what makes neural nets so useful (presumably also in brains) is that not only can t…

【前端知识】React 基础巩固(四十六)——自定义Hook的应用

React 基础巩固(四十六)——自定义Hook的应用 一、自定义Hook的应用 自定义Hook本质上只是一种函数代码逻辑的抽取,严格意义上而言,它并不算React的特性。 实现组件创建/销毁时打印日志 import React, { memo, useEffect, useState } from "react…

#P0994. [NOIP2004普及组] 花生采摘

题目描述 鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”。 鲁宾逊先生和多多都很开心,因为花生正…

java学习路程之篇五、进阶知识、常用API、Object类、Math类、System类、BigDecimal类、包装类

文章目录 1、介绍2、Object类3、Math类4、System类5、BigDecimal类6、包装类 1、介绍 2、Object类 3、Math类 4、System类 5、BigDecimal类 6、包装类

华为云低代码平台Astro Canvas 搭建汽车展示大屏——实验指导手册

实验背景 大屏应用Astro Canvas是华为云低代码平台Astro的子服务之一,是以数据可视化为核心,以屏幕轻松编排,多屏适配可视为基础,用户可通过图形化界面轻松搭建专业水准的数据可视化大屏。例如汽车展示大屏、监控大屏、项目开发大…

【Docker】Docker安装Consul

文章目录 1. 什么是Consul2. Docker安装启动Consul 点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情) 1. 什么是Consul Consul是HashiCorp公司推出的开源软件,提…

JVM面试题--类加载器

什么是类加载器,类加载器有哪些 类加载子系统,当java源代码编译为class文件之后,由他将字节码装载到运行时数据区 BootStrap ClassLoader 启动类加载器或者叫做引导类加载器,是用c实现的,嵌套在jvm内部,…

站群站点日志优化

需求: 1,每个站点的日志需要记录到请求的域名 2,日志需要自动切割保存前三天的内容,防止日志无限增长 3,日志要有利于二次分析 实现: 1,nginx需要修改两个地方 nginx配置 时间 …

JavaScript(二)函数及对象

函数 函数体中return后面不能再添加任何代码&#xff0c;因为不会执行 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&quo…

【论文阅读24】Better Few-Shot Text Classification with Pre-trained Language Model

论文相关 论文标题&#xff1a;论文标题&#xff1a;Label prompt for multi-label text classification&#xff08;基于预训练模型对少样本进行文本分类&#xff09; 发表时间&#xff1a;2021 领域&#xff1a;多标签文本分类 发表期刊&#xff1a;ICANN&#xff08;顶级会…

PyCharm安装使用2023年教程,PyCharm与现流行所有编辑器对比。

与PyCharm类似的功能和特性的集成开发环境&#xff08;IDE&#xff09;和代码编辑器有以下几种&#xff1a; Visual Studio Code&#xff08;VS Code&#xff09;&#xff1a;由Microsoft开发&#xff0c;VS Code是一个高度可定制和可扩展的代码编辑器。它支持多种编程语言&am…

动手学深度学习(一)预备知识

目录 一、数据操作 1. N维数组样例 2. 访问元素 3. 基础函数 &#xff08;1&#xff09; 创建一个行向量 &#xff08;2&#xff09;通过张量的shape属性来访问张量的形状和元素总数 &#xff08;3&#xff09;reshape()函数 &#xff08;4&#xff09;创建全0、全1、…

机器学习笔记之优化算法(六)线搜索方法(步长角度;非精确搜索;Glodstein Condition)

机器学习笔记之优化算法——线搜索方法[步长角度&#xff0c;非精确搜索&#xff0c;Glodstein Condition] 引言回顾&#xff1a; Armijo Condition \text{Armijo Condition} Armijo Condition关于 Armijo Condition \text{Armijo Condition} Armijo Condition的弊端 Glodstein…

开源项目-知识库管理系统(中国软件杯项目)

简述 哈喽,大家好,今天带来一个开源项目-知识库管理系统,项目通过Spring MVC技术实现。通过readme了解到这是某位大神大三暑假(2016年)参加第五届中国软件杯项目的源码。由三人团队完成(Yu yufeng\Zhou changqin\Liu chenzhe) 此作品获得了本科组全国二等奖。项目本身用…