连接MongoDB数据库
# 连接远程服务器(示例) mongo --host 192.168.1.100 --port 27017 -u admin -p password
数据库操作
> show dbs # 查看所有数据库 > use mydb # 切换到mydb数据库(不存在则创建) > db.dropDatabase() # 删除当前数据库 > db.getName() # 查看当前数据库名
集合(表)管理
> db.createCollection("users") # 创建集合 > show collections # 显示所有集合 > db.users.drop() # 删除集合 > db.users.stats() # 查看集合统计信息
文档(记录)操作
插入数据
> db.users.insertOne({name: "张三", age: 28, email: "zhang@example.com"}) > db.users.insertMany([ {name: "李四", age: 32}, {name: "王五", age: 25} ])
查询数据
> db.users.find() # 查询所有文档 > db.users.findOne({age: {$gt: 30}}) # 查找年龄>30的第一条记录 > db.users.find().sort({age: -1}).limit(5) # 按年龄降序取前5条
更新数据
> db.users.updateOne( {name: "张三"}, {$set: {age: 29, status: "active"}} # 更新指定字段 ) > db.users.updateMany( {age: {$lt: 30}}, {$inc: {age: 1}} # 年龄+1 )
删除数据
> db.users.deleteOne({name: "李四"}) > db.users.deleteMany({status: "inactive"})
索引管理
> db.users.createIndex({email: 1}) # 创建升序索引 > db.users.createIndex({name: 1, age: -1}) # 复合索引 > db.users.getIndexes() # 查看所有索引 > db.users.dropIndex("email_1") # 删除索引
用户权限管理
# 管理员连接后创建用户 > use admin > db.createUser({ user: "webadmin", pwd: "securepass123", roles: [{ role: "readWrite", db: "mydb" }] }) # 修改密码 > db.changeUserPassword("webadmin", "newpass456")
数据导入导出
# 导出JSON数据 mongoexport --db mydb --collection users --out users.json # 导入JSON数据 mongoimport --db mydb --collection users --file users.json # 导出CSV mongoexport --type=csv --fields name,age --db mydb --collection users
备份与恢复
# 全库备份 mongodump --host localhost --out /backup/20251001 # 单库备份 mongodump --db mydb --archive > mydb_backup.gz # 恢复数据 mongorestore --db mydb /backup/20251001/mydb
性能监控
> db.currentOp() # 查看当前操作 > db.serverStatus() # 服务器状态 > db.users.explain().find(...) # 查询分析 > db.collection.totalIndexSize() # 索引大小
安全退出与日志
> exit # 退出mongo shell Ctrl + C # 强制退出 # 查看日志(Linux系统) tail -f /var/log/mongodb/mongod.log
注意事项
-
生产环境必做:
- 启用身份验证
security.authorization: enabled
- 定期备份关键数据
- 使用
--tls
参数加密连接
- 启用身份验证
-
操作警告:
> db.users.update({}, {$unset: {phone:1}}, {multi:true}) # 批量操作前先测试 > db.runCommand({collMod: "users", validator: {...}}) # 模式变更需停服维护
-
效率优化:
- 查询时使用
.projection()
限制返回字段 - 避免全集合扫描(
COLLSCAN
) - 索引内存占用不超过RAM的70%
- 查询时使用
引用说明:本文操作基于MongoDB 6.0+版本,参考MongoDB官方文档[1],关键安全配置遵循OWASP数据库安全标准[2],备份策略建议采用3-2-1原则(3份副本,2种介质,1份异地)[3]。
[1] MongoDB Command Line Tools Documentation
[2] OWASP Database Security Cheat Sheet
[3] NIST SP 800-209 Security Guidelines for Storage Infrastructure
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5332.html