MongoDB是一种流行的文档型数据库,它不像传统的关系型数据库(如MySQL)那样需要预先定义表结构,而是用类似JSON的格式(BSON)来存储数据,每个数据项(文档)可以有不同的字段,非常灵活,特别适合快速开发和存储非结构化或半结构化数据。对于新手来说,MongoDB的语法简单直观,入门门槛较低,是学习数据库技术的绝佳选择。
一、安装MongoDB¶
1. 确认系统与下载¶
MongoDB支持Windows、macOS、Linux等主流系统,安装前需确认系统版本(如Windows 10/11、macOS 12+、Ubuntu 20.04+等)。
- Windows用户:
从MongoDB官网(https://www.mongodb.com/try/download/community)下载对应版本的安装包(推荐选择“MSI Installer”,即安装程序)。
安装时注意勾选“Add MongoDB to PATH”(添加环境变量,方便后续命令行操作),其他选项保持默认即可,安装完成后会自动启动MongoDB服务。
- macOS用户:
推荐用Homebrew安装(需先安装Homebrew,未安装可参考官网https://brew.sh/)。
打开终端,执行:
brew tap mongodb/brew
brew install mongodb-community
安装完成后,启动MongoDB服务:brew services start mongodb-community。
- Linux用户(以Ubuntu为例):
执行以下命令添加MongoDB源并安装:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt update
sudo apt install -y mongodb-org
启动服务:sudo systemctl start mongod,并设置开机自启:sudo systemctl enable mongod。
2. 验证安装¶
安装完成后,打开命令行(Windows用cmd/PowerShell,Mac/Linux用终端),输入mongo(或mongosh,新版本可能用mongosh),若能看到类似以下内容,则安装成功:
> MongoDB shell version v6.0.5
> connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.6.1
> Implicit session: session { "id" : UUID("...") }
> MongoDB server version: 6.0.5
> >
此时已成功连接到本地MongoDB服务(默认端口27017)。
二、MongoDB基本概念¶
MongoDB的核心概念与关系型数据库类似,但语法更简洁:
- 数据库(Database):存储多个集合的容器,类似MySQL的“库”。MongoDB默认有test(测试库)、admin(管理库)等,也可自定义。
- 集合(Collection):存储文档的容器,类似MySQL的“表”。集合无需预定义结构,可动态添加字段。
- 文档(Document):MongoDB的最小数据单元,以JSON-like格式(BSON)存储,包含多个键值对,类似MySQL的“行”。例如:
{
"name": "张三",
"age": 25,
"hobbies": ["阅读", "编程"],
"address": { "city": "北京", "street": "中关村大街" }
}
三、基础操作(增删改查)¶
在MongoDB中,所有操作通过mongo/mongosh客户端执行,以下是核心操作:
1. 连接与切换数据库¶
- 连接本地数据库默认使用
test库,可通过use命令切换数据库(若不存在则创建,需插入数据后才实际存在):
> use mydb # 切换到mydb库(若不存在则创建空库)
switched to db mydb
> db # 查看当前数据库
mydb
2. 创建与插入数据¶
MongoDB无需显式创建集合,插入数据时会自动创建集合。用insertOne()插入单条数据,insertMany()插入多条:
- 插入单条文档:
// 插入一个用户信息到mydb库的"users"集合(集合名可自定义)
db.users.insertOne({
name: "张三",
age: 25,
hobbies: ["阅读", "跑步"],
isStudent: false
})
执行后返回:
{
"acknowledged": true,
"insertedId": ObjectId("650a6f78d1e2f3a4b5c6d7e8") // 文档唯一ID,自动生成
}
3. 查询数据¶
用find()查询集合,返回符合条件的所有文档;findOne()返回第一条匹配文档。
- 查询所有文档:
db.users.find() // 返回users集合的所有文档
若需格式化输出,可加.pretty():
db.users.find().pretty() // 格式化显示JSON,更易读
- 条件查询:
// 查询年龄大于20岁的用户
db.users.find({ age: { $gt: 20 } })
// 查询姓名为"张三"的用户(精确匹配)
db.users.find({ name: "张三" })
// 查询姓名包含"三"的用户(模糊匹配)
db.users.find({ name: /三/ }) // 正则表达式
4. 更新数据¶
用updateOne()更新匹配的第一条文档,updateMany()更新所有匹配文档。
- 修改字段:
// 将姓名为"张三"的用户年龄改为26
db.users.updateOne(
{ name: "张三" }, // 条件:name=张三
{ $set: { age: 26 } } // 更新操作:设置age字段为26
)
- 注意:
$set是MongoDB的更新操作符,用于修改指定字段;若直接赋值(如{age: 26}),会覆盖整个文档(慎用)。
5. 删除数据¶
用deleteOne()删除第一条匹配文档,deleteMany()删除所有匹配文档。
- 删除姓名为”张三”的用户:
db.users.deleteOne({ name: "张三" })
四、常见问题与注意事项¶
-
服务未启动:若执行
mongo时报“连接失败”,检查MongoDB服务是否启动:
- Windows:任务管理器→服务→MongoDB是否运行;
- Mac/Linux:sudo systemctl status mongod(查看状态),sudo systemctl start mongod(启动服务)。 -
数据类型:MongoDB支持字符串、数字、布尔、数组、嵌套对象等类型,例如
hobbies: ["阅读", "跑步"]是数组类型。 -
远程连接:若需连接远程MongoDB,需开启服务并设置权限(生产环境需配置安全组/密码),示例:
// 连接远程服务器(IP:192.168.1.100,端口27017)
mongo --host 192.168.1.100 --port 27017 -u 用户名 -p 密码
五、总结¶
MongoDB作为文档型数据库,以灵活的JSON结构和简洁的语法降低了入门门槛。从安装到基础操作(增删改查),核心是理解“数据库→集合→文档”的层级关系,以及find()、insertOne()等基础方法的使用。初学者可先通过本地练习,熟练后再尝试结合代码(如Python/Node.js)操作MongoDB,逐步深入学习聚合查询、索引优化等进阶内容。
提示:多动手实践是关键,遇到问题可查阅MongoDB官方文档(https://www.mongodb.com/docs/)或使用help命令查看支持的方法。