零基础MongoDB入门:从命令行到图形化工具

MongoDB是一种流行的非关系型数据库(NoSQL数据库),它以文档形式存储数据,结构灵活,易于扩展,非常适合快速开发和处理大量非结构化或半结构化数据。对于零基础的同学来说,MongoDB的学习曲线相对平缓,今天我们就从最基础的概念和操作开始,一步步走进MongoDB的世界。

一、MongoDB是什么?

简单来说,MongoDB是一个基于分布式文件存储的数据库。它不像MySQL那样用“表”来存储数据,而是用“文档”(类似JSON格式的键值对)来存储数据,并且将多个文档组织成一个“集合”(类似MySQL的“表”),多个集合又属于一个“数据库”

举个例子:如果把MySQL比作“表格工厂”(每行是记录,每列是字段),MongoDB就像“积木仓库”——你可以自由组合不同的“积木”(字段),灵活搭建出需要的数据结构。

二、安装MongoDB

1. 本地安装(推荐)

  • Windows系统
    从MongoDB官网下载安装包(https://www.mongodb.com/try/download/community),选择对应版本(推荐64位),按提示安装,安装过程中记得勾选“Add to PATH”(方便命令行调用)。安装完成后,打开命令提示符(CMD),输入 mongod --version 验证是否安装成功。

  • Linux系统
    以Ubuntu为例,打开终端执行:

  sudo apt update && sudo apt install -y mongodb

启动服务:sudo systemctl start mongod,设置开机自启:sudo systemctl enable mongod

  • Mac系统
    推荐用Homebrew安装:brew tap mongodb/brew && brew install mongodb-community,启动服务:brew services list | grep mongodb-community 查看状态,没启动的话用 brew services start mongodb-community

2. 验证安装

安装完成后,打开新的终端/命令行窗口,输入 mongo 即可连接到本地MongoDB服务(默认端口27017),如果显示类似 > 提示符,说明连接成功!

三、MongoDB命令行基础操作

MongoDB的核心交互方式是命令行工具(mongo shell),我们先从最基础的数据库、集合、文档操作开始。

1. 数据库操作

  • 切换/创建数据库
    MongoDB中没有“创建数据库”的显式命令,直接用 use 数据库名 即可(如果数据库不存在,会自动创建,后续操作会关联到该数据库)。
    例如:use mydb(切换到名为“mydb”的数据库,不存在则创建)。

  • 查看所有数据库
    输入 show dbs(注意:空数据库不会显示,只有包含数据的数据库才会列出)。

  • 查看当前数据库
    输入 db,会显示当前选中的数据库名称(比如刚创建的“mydb”)。

  • 删除数据库
    先切换到目标数据库(use mydb),然后执行 db.dropDatabase(),会返回 { "dropped" : "mydb", "ok" : 1 },表示删除成功。

2. 集合操作(Collection)

集合相当于关系型数据库中的“表”,是一组文档的集合。MongoDB中集合无需显式创建,插入文档时会自动创建(但也可以用 createCollection 显式创建)。

  • 查看集合
    切换到目标数据库后,输入 show collectionsshow tables(效果相同),会列出该数据库下的所有集合。

  • 删除集合
    先切换到目标数据库,执行 db.集合名.drop(),例如 db.students.drop(),返回 true 表示删除成功。

3. 文档操作(Document)

文档是MongoDB的最小数据单元,格式为JSON(类似键值对),支持嵌套结构,非常灵活。我们重点掌握增(Create)、查(Read)、改(Update)、删(Delete) 操作,简称CRUD。

(1)插入文档(Create)

insertOne(单条)或 insertMany(多条)插入文档。
示例:创建一个“学生”集合,插入1条学生数据:

// 插入单条文档
db.students.insertOne({
  name: "小明",
  age: 18,
  hobbies: ["篮球", "编程"], // 数组类型
  address: { city: "北京", district: "海淀区" } // 嵌套文档
})

返回结果类似:

{
  "acknowledged" : true,
  "insertedId" : ObjectId("60d21b4660d21b4660d21b46"), // 自动生成的唯一ID
  "ok" : 1
}

插入多条文档

db.students.insertMany([
  { name: "小红", age: 19, hobbies: ["画画", "音乐"] },
  { name: "小刚", age: 20, hobbies: ["跑步", "游戏"] }
])
(2)查询文档(Read)

find() 方法查询,默认返回集合中所有文档(类似MySQL的 SELECT * FROM)。
- 查询所有文档

  db.students.find() // 返回一个游标,需遍历查看

若结果较多,光标默认显示前20条,可通过 it 遍历查看剩余结果,或用 toArray() 转为数组:

  db.students.find().toArray() // 返回所有学生数据数组
  • 按条件查询
    find({条件}),例如查询年龄等于18的学生:
  db.students.find({ age: 18 })

常用条件操作符:$gt(大于)、$lt(小于)、$eq(等于,可省略)、$in(包含)等。
示例:查询年龄大于18且小于20的学生:

  db.students.find({ age: { $gt: 18, $lt: 20 } })
(3)更新文档(Update)

updateOne(更新1条)或 updateMany(更新多条),需指定过滤条件更新内容

  • 基础更新(替换文档)
    $set 或直接赋值(替换整个文档)。
    示例:将name为“小明”的学生年龄改为20:
  db.students.updateOne(
    { name: "小明" }, // 过滤条件:name是“小明”
    { $set: { age: 20 } } // 更新内容:仅修改age字段
  )

返回结果:

  { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
  • 增量更新
    如果需要对数值字段做自增(如age+1),用 $inc 操作符:
  db.students.updateOne({ name: "小红" }, { $inc: { age: 1 } }) // age+1
(4)删除文档(Delete)

deleteOne(删除1条)或 deleteMany(删除多条)。

  • 删除1条
  db.students.deleteOne({ name: "小刚" }) // 删除name为“小刚”的第一条
  • 删除多条
  db.students.deleteMany({ age: { $lt: 19 } }) // 删除所有年龄小于19的学生

四、图形化工具:MongoDB Compass

命令行操作适合编程,但日常管理数据时,图形化工具更直观。推荐使用MongoDB官方工具 MongoDB Compass,安装后直接连接本地数据库即可。

1. 安装与连接

  • 官网下载安装包:https://www.mongodb.com/products/compass
  • 安装完成后打开,点击“Connect”,默认连接本地MongoDB(地址:mongodb://localhost:27017),点击“Connect”即可。

2. 工具功能

  • 查看数据库/集合:左侧导航栏显示所有数据库和集合,点击集合可查看所有文档。
  • 增删改查:选中集合后,右侧可直接输入JSON格式文档(插入),或点击“Edit”修改、“Delete”删除文档。
  • 搜索与筛选:顶部有搜索框,可按条件过滤文档(类似命令行的 find())。

五、总结与学习建议

MongoDB的核心优势是灵活的文档结构无固定表结构,适合快速迭代的项目。对于零基础同学,建议:

  1. 多动手练习:从命令行插入、查询简单文档开始,熟悉CRUD操作。
  2. 对比关系型数据库:理解“集合→表”“文档→行”的对应关系,降低认知成本。
  3. 重点关注文档嵌套:MongoDB支持多层嵌套文档,这是处理复杂数据的关键(比如存储用户信息+地址+订单)。

如果需要深入学习,可进一步了解索引(createIndex)、聚合管道(aggregate)、副本集等进阶内容,但打好基础后再深入会更轻松!MongoDB入门不难,关键是多敲命令、多尝试,祝你学习愉快~

小夜