目录
13、MongoDB的日志文件,记录MongoDB的运行日志
4、用于将数据从MongoDB导出为JSON、CSV或TSV格式的工具
5、用于在MongoDB GridFS中存储和检索文件的工具
一、概述
mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON
(一)相关概念
实例:系统上运行的mongodb的进程,类似于mysql实例;
库:每个数据库都是独立的,有自己的用户,权限,独立存储集合,类似于mysql的库;
集合:由一组文档构成,类似于mysql的表;
文档:mongodb数据库的最小数据集,是由多个键值对有序组合的数据单元,类似于mysql的数据记录;
主键:唯一标识一行数据
(二)特性
1、面向集合文档存储,适合存储json形式的数据;
2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行;
3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句;
4、有索引的支持,查询效率更快;
5、支持复制和自动故障转移;
6、可以使用分片集群提升查询性能
二、应用场景
大数据存储和分析:由于MongoDB的灵活性和可扩展性,它非常适合用于存储和分析大规模数据集。它可以处理海量的数据,并支持数据聚合、数据分析和实时查询。
实时分析和日志处理:MongoDB可以快速地存储和索引生成的数据,使其适用于实时分析和日志处理。它可以轻松处理大量实时数据,并提供快速的查询和聚合功能。
内容管理和博客平台:MongoDB的文档模型非常适合存储和管理文本和多媒体内容。它支持动态模式,可以轻松地适应不同类型和格式的内容。
社交网络和实时应用:MongoDB对于实时应用和高并发的场景具有很好的性能。它可以处理大量的读写操作,并提供可扩展性和高可用性。
互联网应用程序:MongoDB适合用于构建Web应用程序,如电子商务平台、内容管理系统和在线游戏。它可以处理复杂的数据模型和高并发的访问请求。
总结来说,MongoDB适用于处理大规模数据、实时分析、内容管理、社交网络和互联网应用程序等各种场景。它提供高性能、可扩展性和灵活性,使开发人员能够构建出功能强大的应用程序。
三、安装
(一)编译安装
(二)yum安装
1、首先制作repo源
vim /etc/yum.repos.d/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、软件包名:mongodb-org
3、启动服务:systemctl start mongod
4、监听端口:mongod
5、端口号:27017
四、目录结构
(一)rpm -ql mongodb-org-server
1、MongoDB的配置文件
vim /etc/mongod.conf
port: 27017 | 监听端口号 |
bindIp: 127.0.0.1 | 监听地址 |
2、MongoDB的运行目录
/run/mongodb
3、MongoDB的可执行文件
/usr/bin/mongod
4、MongoDB的系统服务文件
/usr/lib/systemd/system/mongod.service
5、MongoDB的文档目录
/usr/share/doc/mongodb-org-server-4.2.24
6、MongoDB的许可协议文件
/usr/share/doc/mongodb-org-server-4.2.24/LICENSE-Community.txt
7、MongoDB的许可协议文件
/usr/share/doc/mongodb-org-server-4.2.24/MPL-2
8、MongoDB的README文件
/usr/share/doc/mongodb-org-server-4.2.24/README
9、MongoDB的第三方许可通知文件
/usr/share/doc/mongodb-org-server-4.2.24/THIRD-PARTY-NOTICES
10、MongoDB的man手册文件
/usr/share/man/man1/mongod.1.gz
11、MongoDB的数据目录,存储数据库文件
/var/lib/mongo
12、MongoDB的日志目录,存储日志文件
/var/log/mongodb
13、MongoDB的日志文件,记录MongoDB的运行日志
/var/log/mongodb/mongod.log
(二)rpm -ql mongodb-org-shell
1、MongoDB客户端工具的可执行文件路径(客户端命令)
/usr/bin/mongo
2、MongoDB客户端工具的man手册文件路径
/usr/share/man/man1/mongo.1.gz
(三)rpm -ql mongodb-org-tools
1、将BSON文件转换为JSON格式的工具
/usr/bin/bsondump
2、用于安装MongoDB Compass的工具
/usr/bin/install_compass
3、用于从MongoDB数据库中导出数据的工具
/usr/bin/mongodump
4、用于将数据从MongoDB导出为JSON、CSV或TSV格式的工具
/usr/bin/mongoexport
5、用于在MongoDB GridFS中存储和检索文件的工具
/usr/bin/mongofiles
6、用于将数据导入MongoDB数据库的工具
/usr/bin/mongoimport
7、用于从mongodump创建的备份文件中恢复数据的工具
/usr/bin/mongorestore
8、用于监视MongoDB服务器状态的工具
/usr/bin/mongostat
9、用于监视MongoDB实例中的操作的工具
/usr/bin/mongotop
10、包含MongoDB工具集的文档
/usr/share/doc/mongodb-org-tools-4.2.24
11、包含MongoDB工具集的第三方软件许可证通知
/usr/share/doc/mongodb-org-tools-4.2.24/THIRD-PARTY-NOTICES.gotools
12、bsondump工具的man页
/usr/share/man/man1/bsondump.1.gz
13、mongodump工具的man页
/usr/share/man/man1/mongodump.1.gz
14、mongoexport工具的man页
/usr/share/man/man1/mongoexport.1.gz
15、mongofiles工具的man页
/usr/share/man/man1/mongofiles.1.gz
16、mongoimport工具的man页
/usr/share/man/man1/mongoimport.1.gz
17、mongoldap工具的man页
/usr/share/man/man1/mongoldap.1.gz
18、mongoreplay工具的man页
/usr/share/man/man1/mongoreplay.1.gz
19、mongorestore工具的man页
/usr/share/man/man1/mongorestore.1.gz
20、mongostat工具的man页
/usr/share/man/man1/mongostat.1.gz
21、mongotop工具的man页
/usr/share/man/man1/mongotop.1.gz
(四)rpm -ql mongodb-org-mongos
1、存放系统范围的可执行文件
/usr/bin/mongos
2、mongos的手册页文件
/usr/share/man/man1/mongos.1.gz
五、默认数据库
进入MongoDB数据库命令
mongo
1、admin
从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。
一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
2、local
这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。
3、config
当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
六、数据库操作
(一)库操作
1、查看数据库
注:以下命令二选一即可,均可正常使用。
show databases
show dbs
2、显示当前所在数据库
db
3、切换数据库
use zn
4、数据库创建
4.1、隐式创建
4.2、删除数据库
use dbName
db.dropdatabase()
(二)文档操作
1、创建集合
db.createCollection('wjy')
2、查看集合
show tables
3、删除
3.1、删除数据库
db.dropDatabase()
注:在删除数据库时,一定要先进入要删除的数据库
3.2、删除集合
db.wjy.drop()
4、插入数据(文档)
4.1、单行
db.集合名称.insert({key:value})
db.wjy.insert({'a':'123'})
查看命令:
db.wjy.find({})
4.2、多行
db.集合名称.insertmany([{key:value},{key:value},{key:value}])
db.wjy.insertMany([{'b':'1234'},{'c':'12345'},{'d':'123456'}])
db.wjy.find({})
mongodb默认数字的数据类型float浮点型,若要改变为整型:NumberInt(数字)两种方式:
db.wjy.insert({'_id':'1','a':'123','phone':'111111'})
db.wjy.insert({'_id':NumberInt(2),'b':'1234','phone':'222222'})
删除数据
db.wjy.deleteMany({})
5、查询数据
5.1全集合查询
db.集合名称.find({})
db.wjy.find({})
db.集合名称.find()
db.wjy.find()
5.2、条件查询
db.info.find({查询条件1key:value,查询条件2,...},{key1:1|0,key2:1|0,...})
db.wjy.find({'a':'123'})
db.wjy.find({'a':'123'},{'a':0})
key:1 显示,key:0 不显示
当显示的key只有一个时,key:1 只显示该key及对应value,key:0 显示除了该key之外其他所有keyvalue
5.3、查询集合中有多少文档
db.集合名称.count()
db.wjy.count()
6、删除数据
6.1、全文删除
db.集合名称.remove({})
db.wjy.remove({})
6.2、条件删除
db.集合名称.remove({key:value})
db.wjy.remove({'b':'1234'})
7、更新数据
db.wjy.update({_id:'1'},{$set:{'phone':'222222'}})
7.1、所有满足条件的文档都进行更新
db.info.update({userid:"1003"},{$set:{nickname:"tom"}},{multi:true})
7.2、更新文档进行数值递增
db.info.update({userid:"1003"},{$inc:{likenum:NumberInt(1000)}})
先创建5个同名,方面更改完成查看
第一个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(10)}})
第二个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(20)}})
第三个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(30)}})
第四个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(-20)}})
第五个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(-10)}})
七、MongoDB数据库备份
(一)备份命令
1、mongodump
选项
语法
mkdir /bak
mongodump -d zn -o /bak
2、mongoexport
选项
语法
mongoexport -d zn -c wjy -o /bak/zn_wjy-bak.json
(二)恢复命令
注:在恢复备份前,我们先删除 zn 数据库,不然无法体现出恢复效果
1、mongorestore
选项
语法
mongorestore -d zn -c wjy /bak/zn/wjy.bson
mongo
show dbs
use zn
show tables
db.wjy.find({})
现在已经验证备份已经恢复完毕
2、mongoimport
注:在恢复备份前,我们先删除 zn 数据库下的 wjy 集合,不然无法体现出恢复效果
db.wjy.drop()
选项
语法
mongoimport -d zn -c wjy /bak/zn_wjy-bak.json
进入数据库查看验证
mongo
show dbs
show tables
db.wjy.find({})
经过查看,数据库集合内容已经成功进行恢复
总结
MongoDB是一种强大的非关系型数据库,具有高性能、灵活的数据模型和丰富的功能。它适用于各种应用场景,包括大数据、实时分析和Web应用程序等。尽管使用MongoDB需要一些学习和配置,但它提供的性能和可扩展性使得它成为许多开发者和组织的首选数据库管理系统。