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({}) 清空集合内的文档
相关推荐
陳錄生3 小时前
ubuntu 24.10安装MongoDB
linux·mongodb·ubuntu
练习时长一年3 小时前
Spring内置功能
java·前端·spring
阿巴~阿巴~3 小时前
Centos 7/8 安装 Redis
linux·服务器·数据库·redis·centos
刘大猫.3 小时前
mysql数据库压缩
数据库·mysql·压缩·mysql数据库压缩·数据库压缩·数据库备份与压缩
铉铉这波能秀3 小时前
如何在Android Studio中使用Gemini进行AI Coding
android·java·人工智能·ai·kotlin·app·android studio
oracle04063 小时前
sql练习题单-知识点总结
数据库·sql
会飞的架狗师3 小时前
【MySQL体系】第4篇:MySQL 查询优化实用技巧
数据库·mysql
_Yoke3 小时前
Java 枚举多态在系统中的实战演进:从枚举策略到自动注册
java·springboot·策略模式
人生导师yxc3 小时前
Java中Mock的写法
java·开发语言