mongodb是一款非关系型数据库。
安装:
在epel yum源里面有,yum install mongodb-server mongodb
配置文件:
配置文件在 /etc/mongod.conf
dbpath = /var/lib/mongodb 数据文件位置
bind_ip = 127.0.0.1 注释掉这行
httpinterface = true 开启接口
rest = true 加上这行
修改完成之后启动数据库,systemctl start mongod,使用 mongo 命令进入客户端。
常用配置:
fork={true|false}:是否在后台运行
bind_ip:指定监听地址
port=27017:默认监听端口,当启动httpd接口时会启动28017
httpinterface:可以通过web页面监控mongodb状态信息
maxConns:最大连接数
mongodb命令行
mongodb的命令行操作,使用mongo即可登录到mongodb数据库,
常用命令:
help 帮助命令
db.help()
db.status() 数据库状态,统计数据
db.serverStatus()
show dbs 查看有多少个数据库
show collections 显示数据库中的所有集合
db.getCollectionNames() 显示collection名称及列表
CRUD操作:
创建数据库:不用创建数据库,会在插入数据时自动创建。
db.表名.insert({ key:val, key2:val })
查看数据:
db.mycoll.find()
比较操作符:gte、lte、in、$nin
比较操作:gte、lte、in、$nin
逻辑操作:and, $not, {$or: [{},{}]}
存在性判断:$exists
值类型判断: $type
db.mycoll.find().limit() ,count() ,skip()
db.mycoll.findOne()
删除数据:
db.mycoll.remove({ title : "标题" })
db.mycoll.remove({ age : { $gt : 18 } })
db.mycoll.remove()
修改数据:
db.mycoll.update()
db.mycoll.update( { age : { $gt : 20 } } , { name : 'hello' } , false ,true )
第一部分 { age : { $gt : 20 } } 为要查询的条件,第二部分 { name : 'hello' } 为要修改的值,后面两个参数中第一个参数 false 表示如果记录不存在是否插入新的记录,第二个为是否多记录查询,默认只操作查询第一条记录。
删除表:
db.collectionname.drop()
删除库:
use databasesname
db.dropDatabase()
创建索引:
db.表名.ensuresIndex( {name:1} , { unique : true } ) name为字段名称,后面的unique表示创建的类型为唯一索引。
db.collections.dropIndex(index_name)
db.collections.dropIndexes()
db.collectionsgetIndexes()
db.collections.reIndex()
mongodb复制功能:
mongodb的复制功能有两种,一种是master/slave 和MySQL一样,但是现在已经很少用到了,被弃用了。还有一种叫 replica set,复制集,副本集,这种结构可以实现自动故障转移,更易恢复,这种复制在架构上同MySQL,一个节点可以写其他节点只能读,服务于同一个数据集的多个mongodb实例。
mongodb主节点将数据保存在操作日志oplog中,从节点通过oplog来复制数据并应用于本地的。从节点不断发送心跳信息来监测主节点是否在线。当副本集联系不到直接点超过十秒,就会触发重新选举一个新的主节点,心跳信息传递每隔两秒传递一次,选举有一个仲裁者节点arbiter,也就说至少有三个节点。
数据导入导出
导出数据:
导出某张表/collections到文件。
1
|
mongoexport -d databasename -c collectionsname -o output.txt |
-d 数据库名称
-c 表名称或者叫collection
-o 输出文件名称
-h 数据库宿主机的hostname/IP
-u 数据库的用户名,username
-p 数据库的密码,password
-f 要导出那些列,field
-q 导出数据的过滤条件
导出为CSV格式:
1
2
|
mongoexport -d databasesname -c collectionname --CSV -f field1,field2 -o output.csv mongoexport -d testdb -c students --csv -f name,age -q '{age:{$gt:20}}' -o output.csv |
导入数据:
1
|
mongoimport -d dbname -c collectionname input.filename |
-h 数据库宿主机的IP
-u 数据库的用户名
-p 数据库的密码
-d 数据库的名字
-c collection的名字
-f 要导入那些列
数据备份恢复
数据备份:
mongodump、mongorestore 和 mongoimport、mongoexport的区别在于,前者导出的数据是二进制的,后者导出的是文本是语句。前者对于不同的版本可能不兼容,后者则没有这个问题。
1
|
mongodump -h hostname -d dbname -o output.directory |
-h hostname
-d 数据库名
-o 输出目录名称,是个层级目录,每个表名一个目录
不加任何参数只要使用 mongodump 命令就可以将整个表导出,每个表为一个目录,不过仅限于本机。
加验证数据备份:
备份所有库:
1
|
mongodump --port 27017 -uadmin -p123456 --authenticatonDatabase admin -o directory |
备份单个库:
1
|
mongodump --port 27017 -uadmin -p123456 --authenticationDatabase admin -d databasename -o directory |
备份单张表/数据集:
1
|
mongodump --port 27017 -uadmin -p123456 --authenticationDatabase admin -d databasename -c collectionname -o directory |
备份时候压缩:
1
|
mongodump --host prd-bondmcf001 -u admin -p innodealing --authenticationDatabase admin -- gzip -d databasename -c collectionname -o outputname |
在备份时候加上--gzip参数即可,恢复时也加入--gzip参数。
数据恢复:
mongorestore 是在shell命令行中运行的命令,
mongorestore -h hostname -d dbname directory_of_data
-h hostname
-d 数据库名
后面的目录为导出的数据目录,如果直接使用mongorestore directory_of_data,这样可以将数据直接导入,仅限于本机操作。
加验证的恢复:
恢复整个数据库:
1
|
mongorestore --port 27017 -uadmin -p123456 --authenticationDatabase admin data_path_directory |
后面的 data_path_directory 是数据存放的目录,而且是个父级目录,就是使用mongodump导出时的目录,这个目录下面有对应与数据表的目录,使用的这个目录就是库目录。
恢复单个库:
1
|
mongorestore --port 27017 -uadmin -p123456 --authenticationDatabase admin -d databasename -- dir /backup_dir |
恢复某张表:
data_path_directory
1
|
mongorestore --port 27017 -uadmin -p123456 --authenticationDatabase admin -d dbname -c myTest /root/backuptest_my/test/myTest .bson |
-u 用户名
-p 密码
-d 数据库名
--port 端口号
这个目录 data_path_directory 就是对应的数据表说在目录。
本文来自博客园,作者:大码王,转载请注明原文链接:https://www.cnblogs.com/huanghanyu/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具