Skip to content

MongoDB 数据库与认证操作 ​

Mongo Database ​

数据库(Database)在 MongoDB 中是一个顶级容器,用于组织和存储集合(Collections)。每个数据库可以包含多个集合,而每个集合又可以包含多个文档(Documents)。以下是 MongoDB 数据库的详解和一些操作注意事项:

数据库的特点 ​

  1. 独立性:每个数据库是相互独立的,有自己的权限设置和存储空间。

  2. 命名空间:数据库名是大小写敏感的,且不能包含以下字符:/\. "$*<>:|?

  3. 集合的分组:数据库可以通过集合来组织和存储数据,方便管理和查询。

  4. 权限控制:MongoDB 支持对数据库进行权限控制,可以通过用户角色和权限来管理数据库访问。

  5. 备份和恢复:MongoDB 提供了备份和恢复数据库的功能,方便进行数据的备份和恢复操作。

操作注意事项 ​

  1. 创建数据库:use mydatabase 只切换当前数据库上下文。数据库尚不存在时,首次写入数据或显式创建集合才会实际创建相应数据库和集合。参见官方数据库与集合说明。

  2. 切换数据库:使用 use 命令可以切换当前操作的数据库。例如,要切换到 mydatabase,可以执行 use mydatabase。

  3. 查看当前数据库:可以使用 db 命令查看当前正在使用的数据库。例如,执行 db 命令会显示当前数据库的名称。

  4. 查看所有数据库:可以使用 show dbs 命令来查看 MongoDB 中所有的数据库列表。

  5. 删除数据库:可以使用 db.dropDatabase() 命令来删除当前数据库。请谨慎执行此操作,删除数据库会同时删除其中的所有集合和文档。

  6. 备份和恢复:可以使用 mongodump 和 mongorestore 命令来进行 MongoDB 数据库的备份和恢复操作。

  7. 权限管理:MongoDB 支持对数据库进行权限管理,可以使用 db.createUser() 命令创建用户并分配权限,以控制用户对数据库的访问。

  8. 性能优化:在设计数据库时,应考虑到数据的结构和索引的设计,以及合理利用 MongoDB 提供的分片和复制等功能来优化性能。

  9. 监控和管理:定期监控数据库的性能和运行状态,及时处理异常和优化配置,保证数据库的稳定运行。

连接数据库 ​

原记录使用旧版 mongo shell;当前操作请使用与部署兼容的 mongosh。下面只解释连接参数,不代表已连接或验证某个环境。

  • 主机与端口:DB_HOST、DB_PORT 替换为目标实例地址。
  • 用户:DB_USER 替换为有权限的账号。
  • 认证库:--authenticationDatabase admin 指用户创建于 admin;数据读写所在的库可不同。应以实际账号创建位置为准。
  • 密码:使用交互式提示输入,避免把密码写入文档或 shell 历史。

mongosh --host DB_HOST --port DB_PORT --username DB_USER --authenticationDatabase admin --password

历史命令中的 mongo 与上述 mongosh 不应混当同一个客户端版本。连接成功后先用 db 和 db.version() 核对上下文及服务端版本。

操作数据库 ​

创建的数据库 mydatabase 并不在数据库的列表中, 要显示它,我们需要向 mydatabase 数据库插入一些数据。

  • 切换到 mydatabase 上下文(此时不保证已创建):use mydatabase
  • 查看当前数据库:db
  • 查看所有数据库列表:show dbs
  • 向当前库的 mydatabase 集合首次写入(必要时创建库和集合):db.mydatabase.insertOne({"name":"Example User"})
  • 查看所有数据库列表:show dbs
  • 查询版本信息:db.version()
  • 实例的状态信息:db.serverStatus()
  • 实例的内存使用情况:db.runCommand({ serverStatus: 1, mem: 1 })
  • 实例的存储引擎信息:db.runCommand({ engineStatus: 1 })
  • 查看数据库状态:db.stats()

继续阅读