Mongo DB 安装及基础操作

目录

前言

一、MongoDB概述

相关概念:

特性:

应用场景:

二、MongoDB安装

三、目录结构

四、数据库基本操作

1、结构默认数据库

2、基本命令

3、文档操作

五、MongoDB备份

备份命令

恢复命令



前言

MongoDB是一种开源的、基于文档的NoSQL数据库管理系统。它是由10gen(现为MongoDB Inc.)开发和维护的。MongoDB的设计目标是提供灵活的、可扩展的数据存储解决方案,适用于各种类型的应用程序。

与传统的关系型数据库不同,MongoDB采用了文档存储模式,即将数据以文档的形式存储在集合(collection)中。每个文档都是一个自包含的数据结构,可以包含不同类型的字段,这使得MongoDB非常适合存储半结构化的数据。

MongoDB支持丰富的查询语言和功能,包括复杂的查询、索引、聚合和地理空间查询等。它还具有自动分片和复制功能,可以实现高可用性和可扩展性。

由于其灵活性和可扩展性,MongoDB被广泛应用于各种类型的应用程序,如Web应用程序、物联网、大数据分析等。它也是许多大型互联网公司和初创公司的首选数据库解决方案之一。


一、MongoDB概述

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

相关概念:

|-----------------------------------------------------|
| 实例:系统上运行的mongodb的进程,类似于mysql实例; |
| 库:每个数据库都是独立的,有自己的用户,权限,独立存储集合,类似于mysql的库; |
| 集合:由一组文档构成,类似于mysql的表; |
| 文档:mongodb数据库的最小数据集,是由多个键值对有序组合的数据单元,类似于mysql的数据记录; |
| 主键:唯一标识一行数据 |

特性:

|-------------------------------------|
| 1、面向集合文档存储,适合存储json形式的数据; |
| 2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行; |
| 3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句 ; |
| 4、有索引的支持,查询效率更快; |
| 5、支持复制和自动故障转移; |
| 6、可以使用分片集群提升查询性能 |

应用场景:

|------|
| 游戏 |
| 物流 |
| 社交 |
| 物联网 |
| 视频直播 |
| 大数据 |

二、MongoDB安装

这里我们采用yum安装:

1、确保我们的主机能够上网,来到我们 /etc/yum.repos.d/配置网络源

cd /etc/yum.repos.d/
mkdir back
mv CentOS-* back/
vim mongodb.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
##保存退出

2、下载yum -y install mongodb-org

yum -y install mongodb-org

3.启动数据库 systemctl start mongod.service端口:27017

[root@localhost mongodb]# systemctl start mongod
[root@localhost mongodb]# netstat -anput | grep mongod
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      41729/mongod        
[root@localhost mongodb]# 

三、目录结构

1、查看目录 rpm -ql mongodb-org-server

[root@localhost mongodb]# rpm -ql mongodb-org-server 
/etc/mongod.conf
/run/mongodb
/usr/bin/mongod
/usr/lib/systemd/system/mongod.service
/usr/share/doc/mongodb-org-server-4.2.24
/usr/share/doc/mongodb-org-server-4.2.24/LICENSE-Community.txt
/usr/share/doc/mongodb-org-server-4.2.24/MPL-2
/usr/share/doc/mongodb-org-server-4.2.24/README
/usr/share/doc/mongodb-org-server-4.2.24/THIRD-PARTY-NOTICES
/usr/share/man/man1/mongod.1.gz
/var/lib/mongo
/var/log/mongodb
/var/log/mongodb/mongod.log

|------------------|------------------------------------------------|
| /etc/mongod.conf | 主配置文件 、port: 27017监听端口号、bindIp: 127.0.0.1 监听地址 |
| /run/mongodb | PID文件 |
| /usr/bin/mongod | 启动命令 |
| /var/lib/mongo | 存储数据文件 |
| /var/log/mongodb | 日志 |

2、rpm -ql mongodb-org-shell

[root@localhost mongodb]# rpm -ql mongodb-org-shell
/usr/bin/mongo
/usr/share/man/man1/mongo.1.gz

|----------------|-------|
| /usr/bin/mongo | 客户端命令 |

3、rpm -ql mongodb-org-tools

[root@localhost mongodb]# rpm -ql mongodb-org-tools
/usr/bin/bsondump
/usr/bin/install_compass
/usr/bin/mongodump
/usr/bin/mongoexport
/usr/bin/mongofiles
/usr/bin/mongoimport
/usr/bin/mongorestore
/usr/bin/mongostat
/usr/bin/mongotop
/usr/share/doc/mongodb-org-tools-4.2.24
/usr/share/doc/mongodb-org-tools-4.2.24/THIRD-PARTY-NOTICES.gotools
/usr/share/man/man1/bsondump.1.gz
/usr/share/man/man1/mongodump.1.gz
/usr/share/man/man1/mongoexport.1.gz
/usr/share/man/man1/mongofiles.1.gz
/usr/share/man/man1/mongoimport.1.gz
/usr/share/man/man1/mongoldap.1.gz
/usr/share/man/man1/mongoreplay.1.gz
/usr/share/man/man1/mongorestore.1.gz
/usr/share/man/man1/mongostat.1.gz
/usr/share/man/man1/mongotop.1.gz

|-----------------------|-------|
| /usr/bin/mongodump | 备份数据库 |
| /usr/bin/mongoexport | 备份文档 |
| /usr/bin/mongoimport | 恢复文档 |
| /usr/bin/mongorestore | 恢复数据库 |

四、数据库基本操作

1、结构默认数据库

|--------|--------------------------------------------------------------------------------------------------|
| admin | 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。 一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。 |
| local | 这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。 |
| config | 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。 |

2、基本命令

|-----------|--------------------------------------------------------------------|
| 查看数据库 | show databases或 show dbs |
| 显示当前所在数据库 | db |
| 切换数据库 | use dbName |
| 数据库创建 | 隐式创建:不用主动创建,使用use newDB,会自动创建不存在的数据库,只有在库中创建集合后才会保存,并使用show dbs查看到 |
| 删除数据库 | 先use dbName 后 db.dropdatabase() |

3、文档操作

|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 查看集合 | show tables |
| 创建集合 | db.createCollection("test") |
| 删除集合 | db.需要删除的集合名称.drop() |
| 插入数据(文档) | 单行:db.集合名称.insert({key:value}) 多行: db.集合名称.insertmany([{key:value},{key:value},{key:value}]) (mongodb默认数字的数据类型float浮点型,若要改变为整型:NumberInt(数字) ) |
| 查询数据 | 1.全集合查询: db.集合名称.find({}) db.集合名称.find() 2. 条件查询: db.info.find({查询条件1key:value,查询条件2,...},{key1:1|0,key2:1|0,...}) key:1 显示,key:0 不显示 当显示的key只有一个时,key:1 只显示该key及对应value,key:0 显示除了该key之外其他所有keyvalue 3.查询集合中有多少文档: db.集合名称.count() |
| 删除数据 | 1.全文删除: db.集合名称.remove({}) 2. 条件删除: db.集合名称.remove({key:value}) |
| 更新数据 | 格式 db.info.update({_id:"3"}, {set:{nickname:"jack"}}) 1、所有满足条件的文档都进行更新: db.info.update({userid:"1003"},{set:{nickname:"tom"}},{multi:true}) 2、 更新文档进行数值递增: db.info.update({userid:"1003"},{$inc:{likenum:NumberInt(1000)}}) |

五、MongoDB备份

`mongodump`和`mongoexport`以及`mongorestore`和`mongoimport`是MongoDB中两组相关但略有不同的工具。它们之间的主要区别如下:

  1. `mongodump`与`mongoexport`:
  • `mongodump`用于备份整个MongoDB数据库或指定的数据库。它将数据以二进制格式保存,包括集合和索引等数据库元数据,并可以选择备份整个数据库或仅备份特定的集合。

  • `mongoexport`用于导出MongoDB集合中的数据。它以JSON、CSV或TSV等格式导出数据,并且不包括集合和索引等数据库元数据。

  1. `mongorestore`与`mongoimport`:
  • `mongorestore`用于从备份文件中恢复MongoDB数据库。它可以还原通过`mongodump`工具备份的整个数据库或指定的数据库。

  • `mongoimport`用于将数据从文件中导入到MongoDB集合中。它支持导入多种格式的文件内容,如JSON、CSV或TSV,并将数据插入到指定的集合中。

总结:

  • `mongodump`用于备份MongoDB数据库,而`mongoexport`用于导出MongoDB集合数据。

  • `mongorestore`用于从备份文件中恢复MongoDB数据库,`mongoimport`用于将文件数据导入到MongoDB集合中。

备份命令

|-------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|
| mongodump | 选项 -h=hostname:port -u=<username> -p=<password> --authenticationDatabase=<dbname> -d=<database> -o=<path> | 语法 mongodump -d dbName -h hostName:port -u userName -p Password -o backupDirectory |
| mongoexport | 选项 -h=hostname:port -u=<username> -p=<password> -- authenticationDatabase=<dbname> -d=<database> -o=<path> | 语法 mongoexport -d dbName -c tableName -h hostName:port -u userName -p Password -o backupDirectory/jsonFile.json |

恢复命令

|--------------|------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
| mongorestore | 选项 -h=hostname:port -u=<username> -p=<password> --authenticationDatabase=<dbname> -d=<database> --drop 当目标数据库中存在同名集合则删除再恢复 | 语法 mongorestore -h hostName -u username -p password -d dbName -c tableName bakcupDirector/bsonFile |
| mongoimport | 选项 -h=hostname:port -u=<username> -p=<password> --authenticationDatabase=<dbname> -d=<database> --drop 当目标数据库中存在同名集合则删除再恢复 | 语法 mongoimport -d dbName -c tableName -h hostName:port -u userName -p Password backupDirectory/jsonFile.json |


相关推荐
二十雨辰几秒前
[linux]docker基础
linux·运维·docker
小白学大数据12 分钟前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
time never ceases33 分钟前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle
Jason-河山35 分钟前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化
Frank牛蛙37 分钟前
1.每日SQL----2024/11/7
数据库·sql
饮浊酒38 分钟前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
Ciderw39 分钟前
块存储、文件存储和对象存储详细介绍
网络·数据库·nvme·对象存储·存储·块存储·文件存储
薛晓刚39 分钟前
数据库优化指南:如何将基本功能运用到极致?
数据库
stars_User43 分钟前
MySQL数据库面试题(下)
数据库·mysql
lihuhelihu1 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算