mongodb 常用命令

MongoDB管理与操作指南
启动数据库:
mongod --dbpath="数据库存目录"
安全关闭数据库:
mongo admin --eval "db.shutdownServer()"
 
整库备份:
mongodump -h dbhost -d dbname -o dbdirectory
-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

整库恢复:
mongorestore -h dbhost -d dbname –directoryperdb dbdirectory
-h:MongoDB所在服务器地址
-d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
–directoryperdb:备份数据所在位置,例如:c:\data\dump\test,这里为什么要多加一个test,而不是备份o时候的dump,读者自己查看提示吧!
–drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

单个collection备份:
mongoexport -h dbhost -d dbname -c collectionname -f collectionKey -o dbdirectory
-h: MongoDB所在服务器地址
-d: 需要恢复的数据库实例
-c: 需要恢复的集合
-f: 需要导出的字段(省略为所有字段)
-o: 表示导出的文件名

单个collection恢复:
mongoimport -d dbhost -c collectionname –type csv –headerline –file
-type: 指明要导入的文件格式
-headerline: 批明不导入第一行,因为第一行是列名
-file: 指明要导入的文件路径


超级用户相关:

  1. use admin
  2. #增加或修改用户密码
  3. db.addUser(ixigua,'pwd')
  4. #查看用户列表
  5. db.system.users.find()
  6. #用户认证
  7. db.auth(ixigua,'pwd')
  8. #删除用户
  9. db.removeUser('mongodb')
  10. #查看所有用户
  11. show users
  12. #查看所有数据库
  13. show dbs
  14. #查看所有的collection
  15. show collections
  16. #查看各collection的状态
  17. db.printCollectionStats()
  18. #查看主从复制状态
  19. db.printReplicationInfo()
  20. #修复数据库
  21. db.repairDatabase()
  22. #设置记录profiling,0=off 1=slow 2=all
  23. db.setProfilingLevel(1)
  24. #查看profiling
  25. show profile
  26. #拷贝数据库
  27. db.copyDatabase('mail_addr','mail_addr_tmp')
  28. #删除collection
  29. db.mail_addr.drop()
  30. #删除当前的数据库
  31. db.dropDatabase()
  • 客户端连接
  1. /usr/local/mongodb/bin/mongo 8.8.88/ixigualib -u ixigua -p 'pwd'
  • 增删改
  1. #存储嵌套的对象
  2. db.foo.save({'name':'ysz','address':{'city':'beijing','post':100096},'phone':[138,139]})
  3. #存储数组对象
  4. db.user_addr.save({'Uid':'yushunzhi@sohu.com','Al':['test-1@sohu.com','test-2@sohu.com']})
  5. #根据query条件修改,如果不存在则插入,允许修改多条记录
  6. db.foo.update({'yy':5},{'$set':{'xx':2}},upsert=true,multi=true)
  7. #删除yy=5的记录
  8. db.foo.remove({'yy':5})
  9. #删除所有的记录
  10. db.foo.remove()
  • 索引
  1. #增加索引:1(ascending),-1(descending)
  2. db.things.ensureIndex({firstname: 1, lastname: 1}, {unique: true});
  3. #索引子对象
  4. db.user_addr.ensureIndex({'Al.Em': 1})
  5. #查看索引信息
  6. db.deliver_status.getIndexes()
  7. db.deliver_status.getIndexKeys()
  8. #根据索引名删除索引
  9. db.user_addr.dropIndex('Al.Em_1')
  • 查询
  1. #查找所有
  2. db.foo.find()
  3. #查找一条记录
  4. db.foo.findOne()
  5. #根据条件检索10条记录
  6. db.foo.find({'msg':'Hello 1'}).limit(10)
  7. #sort排序
  8. db.deliver_status.find({'From':'ixigua@sina.com'}).sort({'Dt',-1})
  9. db.deliver_status.find().sort({'Ct':-1}).limit(1)
  10. #count操作
  11. db.user_addr.count()
  12. #distinct操作
  13. db.foo.distinct('msg')
  14. #>操作
  15. db.foo.find({"timestamp": {"$gte" : 2}})
  16. #子对象的查找
  17. db.foo.find({'address.city':'beijing'})
  • 管理
  1. #查看collection数据的大小
  2. db.deliver_status.dataSize()
  3. #查看colleciont状态
  4. db.deliver_status.stats()
  5. #查询所有索引的大小
  6. db.deliver_status.totalIndexSize()
### 如何安全地停止 MongoDB 服务 在 Linux 和 Windows 平台上,可以通过特定的命令来安全地停止 MongoDB 服务。以下是具体方法: #### 方法一:通过 `mongod` 命令手动停止 可以使用以下命令来安全停止 MongoDB 服务,该命令会确保所有与 MongoDB 相关的进程被正确关闭[^3]。 ```bash mongo admin --eval "db.shutdownServer()" ``` 这条命令的作用是向正在运行的 MongoDB 实例发送一个 shutdown 请求,从而优雅地终止服务器。 --- #### 方法二:通过系统服务管理工具停止(适用于 Linux) 如果 MongoDB 是作为系统服务安装的,则可以利用系统的服务管理工具来停止它。对于大多数现代 Linux 发行版,推荐使用 `systemctl` 来操作: ```bash sudo systemctl stop mongod ``` 如果是较旧版本的发行版或者未启用 systemd 的环境,也可以尝试以下命令: ```bash sudo service mongod stop ``` 这些命令能够确保 MongoDB 进程按照预定义的服务脚本正常退出[^2]。 --- #### 方法三:通过 Windows 控制台停止 在 Windows 上,MongoDB 可能会被注册为一项服务。要停止这项服务,可以在管理员权限下的命令提示符中执行如下命令: ```cmd net stop MongoDB ``` 这将通知操作系统停止名为 “MongoDB” 的服务,并等待其完成清理工作后再完全退出。 --- #### 注意事项 无论采用哪种方式,在正式发出停止指令前应确认当前没有正在进行中的写入或其他关键数据库活动;另外还需要注意数据目录路径以及日志文件位置设置是否合理以便于后续排查问题[^5]。 ```python import subprocess def stop_mongodb(): try: result = subprocess.run(['sudo', 'systemctl', 'stop', 'mongod'], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) return f"Mongod stopped successfully: {result.stdout.decode()}" except Exception as e: return f"Error stopping Mongod: {e}" print(stop_mongodb()) ``` 上述 Python 脚本提供了一种自动化手段用于调用 shell 命令去停掉 Linux 下面的 MongoDB 服务实例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值