该mongo
外壳是MongoDB的交互式JavaScript接口。您可以使用mongo
外壳查询和更新数据以及执行管理操作。
注意,从MongoDB 4.2(和4.0.13)开始,mongo
当连接到非正版MongoDB实例时,Shell将显示警告消息,因为这些实例的行为可能与官方MongoDB实例不同。例如缺少或不完整的功能,不同的功能行为等。
连接到MongoDB
前提条件
在尝试启动mongo
Shell程序之前,请确保MongoDB正在运行 。
打开终端窗口(或Windows的命令提示符)并转到 目录:<mongodb installation dir>/bin
cd <mongodb installation dir>/bin
将您的代码添加到 环境变量后,您可以键入内容,而不必去目录或指定二进制文件的完整路径。<mongodb installation dir>/binPATHmongo<mongodb installation dir>/bin
非默认端口上的本地MongoDB实例
要显式指定端口,请包含--port
命令行选项。例如,要使用非默认端口28015连接到在localhost上运行的MongoDB实例,请执行以下操作:
mongo --port 28015
远程主机上的MongoDB实例
要明确指定主机名和/或端口,
- 您可以指定一个连接字符串。例如,要连接到在远程主机上运行的MongoDB实例,请执行以下操作:
mongo "mongodb://mongodb0.example.com:28015"
您可以使用命令行选项。例如,要连接到在远程主机上运行的MongoDB实例,请执行以下操作:--host <host>:<port>
mongo --host mongodb0.example.com:28015
您可以使用和 命令行选项。例如,要连接到在远程主机上运行的MongoDB实例,请执行以下操作:--host <host>
--port <port>
mongo --host mongodb0.example.com --port 28015
具有身份验证的MongoDB实例
要连接到MongoDB实例,需要进行身份验证:
您可以在连接字符串中指定用户名,身份验证数据库以及可选的密码。例如,以用户身份连接并认证到远程MongoDB实例alice
:注意如果未在连接字符串中指定密码,则shell程序将提示您输入密码。
mongo "mongodb://alice@mongodb0.examples.com:28015/?authSource=admin"
您可以使用和 , 命令行选项。例如,以用户身份连接并认证到远程MongoDB实例 :--username <user>--password--authenticationDatabase <db>alice
注意,如果指定时--password
没有用户密码,那么shell程序将提示您输入密码。
mongo --username alice --password --authenticationDatabase admin --host mongodb0.examples.com --port 28015
连接到MongoDB副本集
要连接到副本集:
您可以在连接字符串中指定副本集名称和成员 。
mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"
如果使用DNS Seedlist连接格式,则可以指定连接字符串:
mongo "mongodb+srv://server.example.com/"
注意,使用+srv
连接字符串修饰符会自动将连接的ssl选项设置为true。
您可以 从命令行选项指定副本集名称和成员 。例如,要连接到名为的副本集 :--host <replica set name>/<host1>:<port1>,<host2>:<port2>,...replA
mongo --host replA/mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017
TLS / SSL连接
对于TLS / SSL连接,
您可以ssl=true
在连接字符串中指定选项 。
mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA&ssl=true"
如果使用DNS种子列表连接格式,则可以包括 +srv
连接字符串修饰符:
mongo "mongodb+srv://server.example.com/"
注意,使用+srv
连接字符串修饰符会自动将连接的ssl选项设置为true。
您可以指定--ssl
命令行选项。例如,要连接到名为的副本集replA
:
mongo --ssl --host replA/mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017
mongo Shell操作
显示当前数据库:
db
切换数据库:
use <database>
要列出用户可用的数据库:
show dbs
可以切换到不存在的数据库。首次将数据存储在数据库中(例如通过创建集合)时,MongoDB会创建数据库。例如,以下在操作期间创建数据库 myNewDatabase
和集合 :myCollectioninsertOne()
use myNewDatabase
db.myCollection.insertOne( { x: 1 } );
这db.myCollection.insertOne()
是mongo shell中可用的方法之一。
db
指当前数据库。myCollection
是集合的名称。
如果mongo
Shell程序不接受集合的名称,则可以使用其他db.getCollection()
语法。例如,如果集合名称包含空格或连字符,以数字开头或与内置函数冲突:
db.getCollection("3 test").find()
db.getCollection("3-test").find()
db.getCollection("stats").find()