
前言这是 MongoDB 专栏的第一篇。工欲善其事必先利其器——在讲文档模型、索引、事务这些硬核内容之前我们得先把环境搭起来。本文覆盖三种主流安装方式Windows、LinuxUbuntu、Docker你按自己的需求选一种即可。文末还会给出安装过程中最常见的几个坑以及一个新手最容易忽略但生产环境必须做的动作——开启认证。本文以当前主流的MongoDB 7.x 社区版Community Server为例。一、先认识 MongoDB 的几个核心组件很多人装完 MongoDB都不清楚自己到底装了些什么。先花一分钟扫清概念后面就不会迷糊。组件作用说明mongod数据库服务进程真正干活的服务端数据存储、查询都靠它mongosh命令行客户端新一代 Shell用来连接和操作数据库MongoDB Compass图形化管理工具官方 GUI可视化查看数据、执行查询MongoDB Database Tools命令行工具集包含 mongodump / mongorestore / mongoimport 等用于导入导出、备份恢复这里有个新手必踩的坑要先点出来老版本的命令行客户端叫mongo从 MongoDB 6.0 开始已经被废弃取而代之的是mongosh。如果你在网上看到教程里敲mongo连不上不是装错了是那个教程过时了——改敲mongosh即可。二、Windows 下安装2.1 下载安装包访问官网下载页https://www.mongodb.com/try/download/community选择Version7.0或当前最新的稳定版PlatformWindowsPackagemsi如上图三个下拉框按红框选好点击右侧 Download下载得到一个.msi安装包。2.2 图形化安装双击 msi 安装包进入安装向导。第一步是欢迎页直接点 Next第二步是许可协议勾选同意后 Next第三步选择安装类型选Complete完整安装留意这个界面上的一句提示“The Mongo Shell must be installed separately”——从新版本开始命令行客户端mongosh需要单独安装这里装的主要是服务端。后面第五节连接时我们会再处理 mongosh。第四步服务配置最关键的一步。勾选“Install MongoD as a Service”让 MongoDB 作为 Windows 服务运行这一步要注意几个信息Run service as Network Service user默认即可用系统内置账户运行服务Data Directory / Log Directory数据目录和日志目录。我这里装在了 D 盘D:\develop_tools\MongoDB\Server\7.0\下你可以按自己的磁盘规划调整记下这两个路径后面排查问题会用到安装为服务的好处是开机自动启动不用每次手动开。第五步是否安装 Compass。建议勾选会一并装上官方图形化工具最后一步确认信息点击 Install 开始安装2.3 配置环境变量安装完成后mongod默认不在系统 PATH 里需要手动加进去否则在任意目录敲命令会提示不是内部或外部命令。把 MongoDB 的bin目录加到系统环境变量Path中路径按你实际的安装位置填我这里是 D 盘D:\develop_tools\MongoDB\Server\7.0\bin在编辑系统变量窗口里新增这一行即可注意前面 Complete 界面已经提示过新版本的mongosh需要单独安装。如果 bin 目录下没有mongosh.exe去官网下载 mongosh 独立安装包https://www.mongodb.com/try/download/shell解压后把它的 bin 目录也加进 Path。2.4 验证服务打开 CMD 或 PowerShell检查服务状态# 启动服务如果没自动启动net start MongoDB# 停止服务net stop MongoDB也可以按Win R输入services.msc打开服务管理器找到MongoDB Server服务确认状态为正在运行看到状态是正在运行就说明服务端已经正常跑起来了。2.5 单独安装 mongosh命令行客户端这一步很多人会栽跟头。装完上面的 MongoDB Server 后兴冲冲打开 CMD 敲mongosh结果报错mongosh 不是内部或外部命令也不是可运行的程序或批处理文件。原因前面已经埋过伏笔从新版本开始mongosh不再随 MongoDB Server 一起安装需要单独下载。报这个错不是你装坏了而是压根还没装 mongosh或者装了但没配 PATH。按下面三步解决。第一步先确认到底装没装打开你的 Server 安装目录下的bin我这里是D:\develop_tools\MongoDB\Server\7.0\bin看里面有没有mongosh.exe有 → 跳到第三步配 PATH没有 → 继续第二步单独下载第二步下载并解压 mongosh访问 mongosh 官方下载页https://www.mongodb.com/try/download/shell选择 Platform 为Windows x64、Package 为zip下载后解压到一个固定目录例如D:\develop_tools\mongosh解压后mongosh.exe就在它的bin目录下如D:\develop_tools\mongosh\bin。第三步把 mongosh 的 bin 目录加进 PATH和 2.3 配环境变量的操作一样在系统变量Path里新增 mongosh 所在的 bin 目录D:\develop_tools\mongosh\bin如果第一步发现 Server 的 bin 里本来就有mongosh.exe那你 2.3 已经把这个 bin 加进 PATH 了无需重复添加。第四步重开终端验证改完环境变量后务必关掉当前 CMD / PowerShell 再重新打开旧窗口不会加载新的 PATH这是最容易忽略的一点。然后验证mongosh--version能打印出版本号就说明 mongosh 装好了可以进入第五节做连接验证。三、LinuxUbuntu下安装Linux 下推荐用官方的 apt 源安装方便后续升级和管理。以 Ubuntu 22.04 为例。3.1 导入公钥并添加官方源# 导入 MongoDB 官方 GPG 公钥curl-fsSLhttps://pgp.mongodb.com/server-7.0.asc|\sudogpg-o/usr/share/keyrings/mongodb-server-7.0.gpg--dearmor# 添加 MongoDB 官方 apt 源echodeb [ archamd64,arm64 signed-by/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse|\sudotee/etc/apt/sources.list.d/mongodb-org-7.0.listjammy是 Ubuntu 22.04 的代号。如果你用的是 20.04focal或 24.04noble把这里替换成对应代号。3.2 安装sudoaptupdatesudoaptinstall-ymongodb-org安装完成后几个关键路径需要记住路径用途/var/lib/mongodb数据存储目录/var/log/mongodb/mongod.log日志文件/etc/mongod.conf配置文件改端口、绑定 IP、开认证都在这里3.3 启动与开机自启# 启动sudosystemctl start mongod# 查看状态sudosystemctl status mongod# 设置开机自启sudosystemctlenablemongod# 停止 / 重启sudosystemctl stop mongodsudosystemctl restart mongod3.4 验证mongosh能进入提示符就说明服务正常。四、Docker 方式安装推荐开发环境如果你只是想本地开发、学习或者需要在同一台机器跑多个版本强烈推荐用 Docker。理由很简单干净、隔离、随起随删不污染宿主机环境学完直接删容器一点垃圾都不留。前提是你已经装好了 Docker。4.1 快速启动一个容器dockerrun-d\--namemongodb\-p27017:27017\-vmongodb_data:/data/db\-eMONGO_INITDB_ROOT_USERNAMEadmin\-eMONGO_INITDB_ROOT_PASSWORD123456\mongo:7.0参数说明参数含义-d后台运行--name mongodb容器命名方便后续管理-p 27017:27017端口映射宿主机:容器-v mongodb_data:/data/db数据卷持久化容器删了数据还在-e MONGO_INITDB_ROOT_USERNAME/PASSWORD初始化 root 账号密码-v挂载数据卷是新手最容易漏的一步。如果不挂容器一删数据全没。4.2 用 docker-compose 管理更推荐命令行参数多了容易记错用 compose 文件管理更清晰。新建docker-compose.ymlversion:3.8services:mongodb:image:mongo:7.0container_name:mongodbrestart:unless-stoppedports:-27017:27017environment:MONGO_INITDB_ROOT_USERNAME:adminMONGO_INITDB_ROOT_PASSWORD:123456volumes:-mongodb_data:/data/dbvolumes:mongodb_data:启动 / 停止dockercompose up-d# 启动dockercompose down# 停止并移除容器数据卷保留dockercompose logs-f# 查看日志4.3 进入容器验证# 进入容器内的 mongosh用刚才设置的账号连接dockerexec-itmongodb mongosh-uadmin-p123456五、连接与验证环境装好了接下来要验证能不能正常读写。我们完整走一遍闭环连接数据库 → 新建数据库 → 新建文档 → 查出第一条。这一节给两条路线你选一条即可也可以两条都体验一下5.1 Compass 图形化全程点点点对新手最友好直观看到库 → 集合 → 文档的层级5.2 mongosh 命令行敲命令是后续所有篇章的主力方式建议一定要熟悉5.1 用 Compass 图形化走一遍第一步连接数据库。打开 Compass新建连接在连接字符串框里填本地实例地址mongodb://localhost:27017点击 ConnectSave Connect连接成功后左侧就能看到已有的数据库列表。第二步新建数据库。点左侧的“”Create Database按钮在弹窗里填数据库名和第一个集合名——MongoDB 里建库时必须同时建一个集合。这里数据库填test集合填users这也印证了前面说的MongoDB 的数据库不能空建必须带一个集合才能落地。第三步新建文档。进入test库的users集合此时是空的。点“ADD DATA” → “Insert Document”在弹出的编辑框里把默认内容改成我们要插入的文档_id不用管留空会自动生成{name:Tom,age:18,city:Beijing}点 Insert 完成插入。集合里就出现了这条文档可以看到 MongoDB 自动为它生成了一个_idObjectId 类型第四步查出第一条文档。在顶部的 Filter 过滤框里输入查询条件查出刚插入的这条{name:Tom}点 Find下方就精确返回了匹配的文档到这里连接 → 建库 → 建文档 → 查询的完整闭环就跑通了。Compass 里这套点选操作本质上和下面 mongosh 的命令是一一对应的。5.2 用 mongosh 命令行走一遍Compass 直观但后续讲语法、聚合、索引时我们主要用 mongosh因为它更快、更贴近真实开发。为了不和上面 Compass 建的test库混在一起这次我们用命令行新建一个独立的库bookstore和集合books把同样的流程再走一遍。第一步连接数据库。打开 CMD / PowerShell敲mongosh# 连接本地默认实例等价于 mongodb://localhost:27017mongosh# 也可以显式写完整连接串mongoshmongodb://localhost:27017# 如果开了认证见第六节需要带账号密码mongosh-uadmin-pyour_password--authenticationDatabaseadmin连接成功后会打印出 MongoDB 版本、mongosh 版本等信息并进入test这样的提示符图里那句黄色的 “Access control is not enabled for the database” 就是在提醒你当前没开认证——本地学习无所谓上生产必须处理见第六节。第二步新建切换数据库。// 切换到 bookstore 库不存在也没关系写入数据时会自动创建use bookstore切换后提示符会变成bookstore第三步新建文档。// 向 books 集合插入一条文档集合不存在会自动创建db.books.insertOne({title:MongoDB 实战,author:Tree,price:89,stock:120})执行后会返回acknowledged: true和自动生成的_id第四步查出第一条文档。// 按条件查询等价于 Compass 里的 Filterdb.books.find({title:MongoDB 实战})能查出刚插入的那条文档就说明整条链路完全通畅再用两个命令确认下库和集合都已经落地// 查看当前有哪些数据库此时能看到 test 和 bookstore 两个库show dbs// 查看当前库里有哪些集合show collections到这里环境就彻底验证通过了。此时show dbs会同时列出 Compass 建的test和命令行建的bookstore——两条路线各建各的互不影响。一个反直觉的点use bookstore之后如果不往里写数据show dbs是看不到 bookstore 库的。MongoDB 里数据库和集合都是懒创建的——只有真正写入数据时才会落地。这也是为什么 Compass 建库时强制要你同时建一个集合。六、开启认证上生产前的第一道门前面为了方便本地可以裸奔不开认证。但这里必须严肃地提醒一句裸奔的 MongoDB 是重灾区。早年间大量 MongoDB 实例因为默认无认证、又把端口暴露在公网被自动化脚本扫描后清空数据、留下勒索信。只要你的实例可能被外部访问认证就不是可选项。6.1 创建管理员用户连接后切换到admin库创建用户use admin db.createUser({user:admin,pwd:your_strong_password,roles:[{role:root,db:admin}]})用 Docker 的MONGO_INITDB_ROOT_USERNAME/PASSWORD方式启动的这一步容器已经帮你做了可跳过。6.2 开启认证Linux编辑/etc/mongod.conf加上security:authorization:enabled然后重启sudo systemctl restart mongod。Windows编辑安装目录下的mongod.cfg按前面的安装路径我这里是D:\develop_tools\MongoDB\Server\7.0\bin\mongod.cfg同样加上上面那段security配置再到服务管理器重启 MongoDB Server 服务。6.3 带认证连接开启后再想操作就必须带上账号密码了mongosh-uadmin-pyour_strong_password--authenticationDatabaseadmin七、常见安装问题排查延续本专栏踩坑的传统把最高频的几个问题列成 FAQ。1. 端口 27017 被占用启动失败日志里出现Address already in use。查一下谁占了# Linux / macOSlsof-i:27017# Windowsnetstat-ano|findstr27017要么杀掉占用进程要么改配置文件里的net.port换个端口。2. 服务启动失败数据目录问题常见于手动指定--dbpath启动时目录不存在 → MongoDB不会自动创建需要手动mkdir目录权限不足 → Linux 下确保数据目录属主是运行 mongod 的用户通常是mongodb3. mongosh 连不上排查顺序服务到底起没起systemctl status mongod/ 服务管理器是不是连的地址/端口不对远程连不上检查配置文件里的net.bindIp——默认只绑127.0.0.1只允许本机访问要允许外部访问需改成0.0.0.0但记得先开认证再对外开放。防火墙 / 云服务器安全组有没有放行 27017 端口4. 敲mongo提示命令找不到前面说过了新版已改名mongosh。八、小结三种安装方式怎么选给你一张速查表场景推荐方式理由本地长期开发、当主力环境Windows / Linux 原生安装稳定作为服务常驻快速试验、学习、多版本共存Docker干净隔离随起随删团队协作、统一环境Docker Compose一份配置文件人人环境一致到这里环境已经准备就绪。下一篇《MongoDB 基础语法与数据结构》我们会从 BSON 数据类型讲起带你把增删改查CRUD和常用查询操作符彻底搞明白为后面的文档模型设计打好基础。