MongoDB 环境安装

认识完 MongoDB 是什么,这一篇把环境搭起来。MongoDB 的工具链分三块:Server(数据存储的服务端进程)、mongosh(命令行交互 shell)、Compass(图形客户端)。新手如果不想本地折腾,还可以用云端的 Atlas 免安装上手。

1. macOS 安装

macOS 推荐 Homebrew,几行命令搞定。装完后服务会后台常驻,默认监听 27017 端口。

# macOS 用 Homebrew 最省事(没有 brew 先装: https://brew.sh)
brew tap mongodb/brew
brew install mongodb-community        # MongoDB 服务端
brew install mongosh                   # 新版 shell(替代老 mongo)
brew install mongodb-compass           # 图形客户端(可选)

# 启动服务(后台常驻)
brew services start mongodb-community

# 看是否在跑
brew services list | grep mongodb
# 输出大概: mongodb-community  started  ...

# 默认监听 27017 端口,数据目录在 /usr/local/var/mongodb

如果想停止服务:brew services stop mongodb-community。日志在 /usr/local/var/log/mongodb,出问题先去看日志。

2. Linux(Ubuntu/Debian)安装

生产服务器大多是 Linux,用官方 apt 源装最稳。注意 MongoDB 官方源分版本(7.0、8.0 等),版本号要和你下载的对上。

# Ubuntu/Debian 用官方源(apt)
# 1. 导入公钥
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | \
  sudo apt-key add -

# 2. 加源
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu \
  jammy/mongodb-org/7.0 multiverse" | \
  sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

# 3. 安装
sudo apt-get update
sudo apt-get install -y mongodb-org

# 4. 启动
sudo systemctl start mongod
sudo systemctl enable mongod     # 开机自启
sudo systemctl status mongod

3. Windows 安装

Windows 有现成的 MSI 安装包,一路下一步即可。建议勾选"作为服务安装",这样开机自启,不用手动启动。

# Windows 推荐:
# 1. 去 https://www.mongodb.com/try/download/community
#    下载 MSI 安装包(Server 版本,选 Current 稳定版)
# 2. 双击安装,勾选 "Install MongoDB as a Service"
#    服务名保持默认 MongoDB,数据目录默认 C:\Program Files\MongoDB\Server\data
# 3. 安装程序会顺带问要不要装 Compass,勾上(图形界面)
# 4. mongosh 单独下: https://www.mongodb.com/try/download/shell

# 服务管理(PowerShell 管理员)
Start-Service MongoDB
Stop-Service MongoDB
Get-Service MongoDB

4. 启动 mongosh——你的主战场

服务跑起来后,用 mongosh 连上去。mongosh 是个完整的 Node.js REPL,你可以写 JS 表达式、定义变量、用 for 循环批量插数据,远比老版的 mongo shell 强大。后面所有教程的示例都默认在 mongosh 里运行。

# 启动 mongosh(默认连本机 27017)
mongosh

# 进入后是交互式 JS 环境,先看版本
> version()
2.8.0

# 看当前有哪些数据库
> show dbs
admin    40.00 KiB
config   60.00 KiB
local    40.00 KiB

# 切换/创建数据库(首次写入才真正建立)
> use myblog
switched to db myblog

# 插一条试试
> db.posts.insertOne({ title: "第一篇", views: 0 })
{
  acknowledged: true,
  insertedId: ObjectId("65a1...")
}

# 查一下
> db.posts.find()
[ { _id: ObjectId("..."), title: "第一篇", views: 0 } ]

# 退出
> exit

几个常用小技巧:

5. Compass——图形客户端

纯命令行看数据有时不够直观,MongoDB 官方提供了 Compass 这个图形客户端(免费):

启动后地址栏填 mongodb://localhost:27017 即可连接本地。新手强烈建议装一个,比纯黑框友好得多。

6. 不想装?用 Atlas 云数据库

如果你只是想跟着教程练手,不想折腾本地安装,MongoDB Atlas 提供永久免费的 M0 套餐(512MB 存储、共享内存,够学习和小项目用)。注册后给你一个 mongodb+srv://... 连接串,mongosh、Compass、应用代码都用这一条连。

# 完全不想本地装?用 Atlas 云数据库,3 分钟拿到连接串
#
# 1. 浏览器打开 https://www.mongodb.com/atlas
# 2. 注册账号(GitHub/Google 一键登录)
# 3. 选 "Free" 免费套餐(M0,512MB,够学习用)
# 4. 选离你近的 Region(国内用户选 AWS / Singapore)
# 5. 创建集群,等 1~3 分钟拉起来
# 6. Database Access → 加一个数据库用户(记好密码)
# 7. Network Access → 加你的 IP(或 0.0.0.0/0 允许全部,仅学习用)
# 8. Connect → Drivers → 复制连接串,类似:
#
#    mongodb+srv://用户名:密码@cluster0.xxxxx.mongodb.net/
#
# 9. mongosh 直接连:
mongosh "mongodb+srv://cluster0.xxxxx.mongodb.net/" \
  --username 你的用户名

# 或者在 Compass 地址栏粘贴同一条连接串,图形界面打开

Atlas 的好处是免运维:副本集、备份、升级都自动。坏处是国内访问延迟较高(服务器在海外),生产环境国内项目通常还是自建或选国内云的托管服务。

7. 配置文件与数据目录

本地安装时,知道数据和配置在哪很重要(出问题要去看):

启动 mongod(服务进程)时可以手动指定参数:mongod --dbpath /自定义路径 --port 28018。一般用服务管理(systemctl / brew services)更省心。

8. 第一个完整流程:建库 → 插数据 → 查

把环境串起来跑一遍:启动 mongosh,切到自己的数据库,插几条文档,再查出来——确认整套链路通了,后面的教程才能继续。

# 启动 mongosh(默认连本机 27017)
mongosh

# 进入后是交互式 JS 环境,先看版本
> version()
2.8.0

# 看当前有哪些数据库
> show dbs
admin    40.00 KiB
config   60.00 KiB
local    40.00 KiB

# 切换/创建数据库(首次写入才真正建立)
> use myblog
switched to db myblog

# 插一条试试
> db.posts.insertOne({ title: "第一篇", views: 0 })
{
  acknowledged: true,
  insertedId: ObjectId("65a1...")
}

# 查一下
> db.posts.find()
[ { _id: ObjectId("..."), title: "第一篇", views: 0 } ]

# 退出
> exit

能看到 insertOne 返回 acknowledged: truefind 把数据查出来,环境就 OK 了。

小结

这一篇你完成了三件事:本地装好 MongoDB Server、能用 mongosh 连上去、了解了 Compass 图形客户端和 Atlas 云选项。下一篇正式进入数据库的核心——增删改查(CRUD),从 insertOne 一路讲到 deleteMany

← 上一篇 MongoDB 简介

下一篇 MongoDB 增删改查

✈️💬