Java-145 深入浅出 MongoDB 基本操作详解:数据库查看、切换、创建集合与删除完整教程

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI篇持续更新中!(长期更新)

AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布!"快的模型 + 深度思考模型 + 实时路由",持续打造实用AI工具指南!📐🤖

💻 Java篇正式开启!(300篇)

目前2025年10月07日更新到:
Java-141 深入浅出 MySQL Spring事务失效的常见场景与解决方案详解(3)

MyBatis 已完结,Spring 已完结,Nginx已完结,Tomcat已完结,分布式服务正在更新!深入浅出助你打牢基础!

📊 大数据板块已完成多项干货更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!
大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解

基本操作

查看数据库

在 MongoDB 中,show dbs 命令用于列出当前 MongoDB 实例中的所有数据库及其存储大小。这个命令对于数据库管理和监控非常有用。

命令语法

shell 复制代码
show dbs;

命令说明

  1. 该命令会显示所有非空数据库
  2. 每个数据库会显示其名称和占用空间大小(以MB为单位)
  3. 系统默认会显示三个数据库:
    • admin:存储用户权限信息
    • local:存储本地单服务器特定数据
    • config:存储分片集群配置信息

示例输出

shell 复制代码
admin   0.000GB
config  0.000GB
local   0.000GB
mydb    0.045GB
test    0.002GB

注意事项

  1. 新创建的数据库如果没有数据,不会显示在列表中
  2. 需要具有适当的权限才能查看所有数据库
  3. 在分片集群中,该命令只显示主分片上的数据库

相关命令

  • use <dbname>:切换到指定数据库
  • db.dropDatabase():删除当前数据库
  • db.stats():查看当前数据库的统计信息

我们启动一个连接的Shell,进行测试:

切换数据库

在 MongoDB 中,use 命令用于切换当前操作的数据库。这个命令既可用于创建新数据库,也可用于切换到已存在的数据库。

语法说明

shell 复制代码
use database_name;

其中:

  • database_name 是目标数据库的名称
  • 如果数据库不存在,MongoDB 会在第一次向该数据库写入数据时自动创建它

使用示例

  1. 切换到已存在的 "test" 数据库:
shell 复制代码
use test;
  1. 创建并切换到新数据库 "mydb":
shell 复制代码
use mydb;

注意事项

  • 切换数据库后,所有后续操作(如集合创建、数据插入等)都将在该数据库上执行
  • 要查看当前正在使用的数据库,可以使用 db 命令
  • 要列出所有数据库,可以使用 show dbs 命令
  • 新创建的数据库只有在插入数据后才会显示在数据库列表中

应用场景

  • 开发过程中需要操作不同的数据库
  • 测试环境与生产环境的数据库切换
  • 多租户应用中的数据库隔离

比如我这里:

shell 复制代码
use local;

创建集合

基本语法

在MongoDB中,可以使用db.createCollection()方法来创建一个新的集合。基础语法如下:

shell 复制代码
db.createCollection(name, options)
  • name:要创建的集合名称(字符串类型)
  • options:可选参数,用于指定集合的配置选项

创建wzk集合示例

shell 复制代码
db.createCollection("wzk")

这个命令会在当前数据库中创建一个名为"wzk"的集合。如果创建成功,MongoDB会返回:

json 复制代码
{ "ok" : 1 }

可选参数说明

可以为集合指定额外的配置选项,例如:

shell 复制代码
db.createCollection("wzk", {
    capped: true,       // 是否为固定集合
    size: 100000,       // 固定集合的最大大小(字节)
    max: 500            // 固定集合允许的最大文档数
})

实际应用场景

  1. 日志存储:创建固定集合(capped collection)来存储日志,自动淘汰旧数据
  2. 临时数据:为特定业务创建专用集合
  3. 数据分片:为分片集群创建初始集合

注意事项

  • 集合名称区分大小写
  • 集合名称不能包含特殊字符(如$)
  • 如果集合已存在,该命令不会覆盖原有集合

查看集合

在 MongoDB 中,集合(Collection)类似于关系型数据库中的表(Table)。要查看当前数据库中的所有集合,可以使用以下命令:

shell 复制代码
show tables;

或者

shell 复制代码
show collections;

说明:

  1. 这两个命令功能完全相同,都会显示当前数据库中的所有集合名称
  2. 使用前需要先选择数据库(通过 use 数据库名 命令)
  3. 显示结果不包括系统集合(如system.indexes),要查看系统集合需要使用 db.getCollectionNames()

示例:

假设当前数据库为"test",包含三个集合:users, products, orders

执行命令后会显示:

shell 复制代码
> show collections;
users
products
orders

其他相关命令:

shell 复制代码
# 查看集合详细信息(包括系统集合)
db.getCollectionInfos()

# 查看特定集合的状态信息
db.collection.stats()

删除集合

语法说明

在MongoDB中删除集合可以使用db.collection.drop()方法。该方法会完全删除指定的集合及其所有文档、索引等关联数据。

基本语法:

shell 复制代码
db.<collection_name>.drop()

参数说明

  • collection_name:要删除的集合名称

执行示例

shell 复制代码
db.wzk.drop();

返回值

  • 成功删除时返回true
  • 集合不存在时返回false

注意事项

  1. 删除操作不可逆,执行前请确认数据已备份或不再需要
  2. 删除集合会同时删除该集合的所有索引
  3. 需要具备相应的数据库权限才能执行此操作
  4. 在生产环境执行前建议先确认集合大小:db.wzk.stats()

替代方案

如果只是想清空集合数据而保留集合结构,可以考虑使用:

shell 复制代码
db.wzk.deleteMany({})

应用场景

  1. 测试环境数据清理
  2. 重构数据库结构
  3. 临时数据清理
  4. 数据迁移前的准备工作

删除掉集合

删除当前数据库

db.dropDatabase() 是 MongoDB 中用于删除当前所在数据库的命令。这个命令会永久删除整个数据库及其所有集合和文档,执行前请务必确认。

使用说明

  1. 基本语法
shell 复制代码
db.dropDatabase()
  1. 执行步骤

    • 首先通过 use 命令切换到目标数据库
    • 然后执行 db.dropDatabase()
    • 命令会返回删除操作的结果信息
  2. 示例

shell 复制代码
> use testdb  # 切换到testdb数据库
switched to db testdb
> db.dropDatabase()  # 删除当前数据库
{ "dropped" : "testdb", "ok" : 1 }
  1. 注意事项

    • 删除操作不可逆
    • 需要具有足够的权限
    • 在生产环境使用时需特别谨慎
    • 建议在执行前先备份重要数据
  2. 应用场景

    • 测试环境重置
    • 清理废弃数据库
    • 开发环境重建数据结构
  3. 替代方案

    • 如果只是想清空数据而不删除数据库,可以考虑使用 db.collection.drop() 逐个删除集合
    • 或者使用 db.collection.remove({}) 清空集合内的文档
相关推荐
小宇的天下18 小时前
Calibre 3Dstack Flow Example(5-2)
性能优化
小毅&Nora18 小时前
【Java线程安全实战】⑨ CompletableFuture的高级用法:从基础到高阶,结合虚拟线程
java·线程安全·虚拟线程
冰冰菜的扣jio18 小时前
Redis缓存中三大问题——穿透、击穿、雪崩
java·redis·缓存
PyHaVolask18 小时前
SQL注入漏洞原理
数据库·sql
小璐猪头18 小时前
专为 Spring Boot 设计的 Elasticsearch 日志收集 Starter
java
ptc学习者18 小时前
黑格尔时代后崩解的辩证法
数据库
代码游侠18 小时前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
Tisfy18 小时前
网站访问耗时优化 - 从数十秒到几百毫秒的“零成本”优化过程
服务器·开发语言·性能优化·php·网站·建站
ps酷教程18 小时前
HttpPostRequestDecoder源码浅析
java·http·netty
闲人编程18 小时前
消息通知系统实现:构建高可用、可扩展的企业级通知服务
java·服务器·网络·python·消息队列·异步处理·分发器