核心命令
最基本、最常用的命令是 mongosh。

mongosh
执行此命令后,MongoDB 服务正在运行,你将看到类似下面的欢迎界面,并进入 mongosh 命令提示符:
Current Mongosh Version: r7.0.4
...
To help improve the quality of Mongosh, please run: db.runCommand({ buildInfo: 0, featureCompatibilityVersion: 0 })
For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/
你的光标会变成 >,表示你已经成功进入了 MongoDB Shell,并且默认连接到了 test 数据库。
连接到指定的 MongoDB 实例
在实际应用中,你的 MongoDB 服务可能运行在不同的主机、端口或需要身份验证,这时,你需要在启动 mongosh 时提供相应的连接选项。
连接到不同主机和端口
如果你的 MongoDB 服务没有运行在本地(localhost)的默认端口(27017)上。

语法:
mongosh <hostname>:<port>
示例:
连接到 IP 地址为 168.1.100,端口为 27018 的 MongoDB 服务。
mongosh 192.168.1.100:27018
连接到需要身份验证的数据库(最常见)
如果你的 MongoDB 启用了用户认证(生产环境强烈推荐),你需要提供用户名、密码以及认证数据库。
语法:

mongosh "mongodb://<username>:<password>@<hostname>:<port>/<authDb>?authMechanism=SCRAM-SHA-256"
<username>: 你的数据库用户名。<password>: 你的数据库密码。<hostname>: 数据库服务器地址。<port>: 数据库服务端口。<authDb>: 认证数据库,这是存储该用户信息的数据库,通常是admin,但也可以是其他数据库。authMechanism: 认证机制,SCRAM-SHA-256是目前最常用和安全的。
示例:
连接到运行在 localhost:27017 的服务,使用 admin 数据库中的 myUser 用户进行认证。
mongosh "mongodb://myUser:myPassword@localhost:27017/?authSource=admin"
注意: 密码中如果包含特殊字符(如 , , ),可能会导致连接字符串解析错误,建议对密码进行 URL 编码,或者使用引号将整个连接字符串包裹起来。
连接到 MongoDB Atlas (云服务)
如果你使用的是 MongoDB Atlas 云数据库,连接方式略有不同,你需要从 Atlas 控制台获取连接字符串。
- 登录你的 MongoDB Atlas 账户。
- 进入你的集群页面,点击 "Connect" (连接) 按钮。
- 选择 "Connect your application" (连接你的应用程序)。
- 选择 "Node.js" 驱动,并复制 "Connection string" (连接字符串)。
- 连接字符串通常长这样:
mongodb+srv://<username>:<password>@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority - 在终端中直接使用这个完整的连接字符串:
mongosh "mongodb+srv://<username>:<password>@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority"
注意: Atlas 默认会连接到
test数据库,但通常你想要连接到特定的数据库,你可以在连接字符串末尾的mongodb.net/后面直接加上数据库名称,/myDatabase?retryWrites=true&w=majority。
进入 Shell 后的基本操作
一旦你成功进入 mongosh,你可以执行以下命令来操作数据库:
| 命令 | 描述 | 示例 |
|---|---|---|
show dbs 或 show databases |
列出所有数据库 | show dbs |
use <databaseName> |
切换到指定数据库,如果不存在,则在首次写入数据时创建。 | use myApp |
db |
显示当前正在使用的数据库名称。 | db |
show collections |
列出当前数据库中的所有集合(类似关系数据库中的表)。 | show collections |
db.<collectionName>.find() |
查询集合中的所有文档。 | db.users.find() |
exit 或 Ctrl + C |
退出 MongoDB Shell。 | exit |
常见问题与解决方案
'mongosh' 不是内部或外部命令...
这个错误表明你的系统中没有安装 MongoDB,或者 mongosh 的安装路径没有被添加到系统的环境变量 PATH 中。
解决方案:
- 确保已安装 MongoDB: 如果你只是安装了 MongoDB Server,你可能需要单独安装
mongosh,请访问 MongoDB 下载页面 下载并安装mongosh。 - 检查 PATH: 确保
mongosh的可执行文件所在的目录(C:\Program Files\MongoDB\Shell\bin在 Windows 上,或/usr/local/bin在 macOS/Linux 上)已添加到系统的PATH环境变量中。
Failed to connect to server...
这个错误表示 mongosh 无法连接到指定的 MongoDB 实例。
可能的原因及解决方案:
- 服务未启动: MongoDB 服务器可能没有运行。
- 解决方案: 启动 MongoDB 服务,在 Windows 上可能是通过 "服务" 应用,在 macOS/Linux 上可能是
sudo systemctl start mongod。
- 解决方案: 启动 MongoDB 服务,在 Windows 上可能是通过 "服务" 应用,在 macOS/Linux 上可能是
- 地址或端口错误: 你提供的主机名或端口号不正确。
- 解决方案: 再次检查 MongoDB 服务的配置文件(通常是
mongod.conf)中的bindIp和port设置,确保你的连接参数与之匹配。
- 解决方案: 再次检查 MongoDB 服务的配置文件(通常是
- 防火墙阻止: 本地或网络防火墙可能阻止了到
27017端口的连接。- 解决方案: 检查并配置防火墙规则,允许流量进出 MongoDB 的端口。
- 身份验证失败: 用户名、密码或认证数据库错误。
- 解决方案: 仔细核对用户凭据和
authSource数据库名。
- 解决方案: 仔细核对用户凭据和
希望这份详细的指南能帮助你顺利进入 MongoDB 命令行!
