参考 > mongo shell
该mongo
外壳是MongoDB的交互式JavaScript接口。您可以使用mongo
外壳查询和更新数据以及执行管理操作。
该mongo
外壳程序是MongoDB Server安装的一部分。MongoDB还将mongo
Shell作为独立软件包提供。要下载独立的mongo
shell软件包:
打开下载中心。对于
mongo
Enterprise Shell,选择
MongoDB Enterprise Server选项卡。
从下拉列表中选择您的首选版本和操作系统。
选择要根据您的平台下载的软件包:
一旦你已经安装,并已开始MongoDB中,将连接mongo
外壳到正在运行的MongoDB实例。
注意
从MongoDB 4.2(和4.0.13)开始,mongo
当连接到非正版MongoDB实例时,Shell将显示警告消息,因为这些实例的行为可能与官方MongoDB实例不同。例如缺少或不完整的功能,不同的功能行为等。
mongo
Shell并连接到MongoDB¶在尝试启动mongo
外壳程序之前,请确保MongoDB正在运行
。
打开终端窗口(或Windows的命令提示符)并转到
目录:<mongodb installation dir>/bin
小费
将您的代码添加到
环境变量后,您可以键入内容,而不必去目录或指定二进制文件的完整路径。<mongodb installation dir>/bin
PATH
mongo
<mongodb installation dir>/bin
要明确指定主机名和/或端口,
您可以指定一个连接字符串。例如,要连接到在远程主机上运行的MongoDB实例,请执行以下操作:
您可以使用命令行选项。例如,要连接到在远程主机上运行的MongoDB实例,请执行以下操作:--host <host>:<port>
您可以使用和
命令行选项。例如,要连接到在远程主机上运行的MongoDB实例,请执行以下操作:--host <host>
--port <port>
要连接到MongoDB实例,需要进行身份验证:
您可以在连接字符串中指定用户名,身份验证数据库以及可选的密码。例如,以用户身份连接并认证到远程MongoDB实例alice
:
注意
如果未在连接字符串中指定密码,则外壳程序将提示您输入密码。
您可以使用和
,
命令行选项。例如,以用户身份连接并认证到远程MongoDB实例
:--username <user>
--password
--authenticationDatabase <db>
alice
注意
如果指定时--password
没有用户密码,那么外壳程序将提示您输入密码。
要连接到副本集:
您可以在连接字符串中指定副本集名称和成员 。
如果使用DNS Seedlist连接格式,则可以指定连接字符串:
注意
使用+srv
连接字符串修饰符会自动将连接的ssl选项设置为true。
您可以
从命令行选项指定副本集名称和成员
。例如,要连接到名为的副本集
:--host <replica set
name>/<host1>:<port1>,<host2>:<port2>,...
replA
对于TLS / SSL连接,
您可以ssl=true
在连接字符串中指定选项
。
如果使用DNS种子列表连接格式,则可以包括
+srv
连接字符串修饰符:
注意
使用+srv
连接字符串修饰符会自动将连接的ssl选项设置为true。
您可以指定--ssl
命令行选项。例如,要连接到名为的副本集replA
:
也可以看看
有关连接示例中使用的选项以及其他选项的更多信息,请参阅mongo参考和启动mongo的示例。
mongo
壳牌¶要显示您正在使用的数据库,请输入db
:
该操作应返回test
,这是默认数据库。
要切换数据库,请发出帮助程序,如以下示例所示:use <db>
另请参见db.getSiblingDB()
在不切换当前数据库上下文(即db
)的情况下从当前数据库访问其他数据库的方法。
要列出用户可用的数据库,请使用帮助器。[1]show
dbs
您可以切换到不存在的数据库。首次将数据存储在数据库中(例如通过创建集合)时,MongoDB会创建数据库。例如,以下在操作期间创建数据库
myNewDatabase
和集合 :myCollection
insertOne()
这db.myCollection.insertOne()
是mongo shell中可用的方法之一。
db
引用当前数据库。myCollection
是集合的名称。如果mongo
外壳程序不接受集合的名称,则可以使用其他db.getCollection()
语法。例如,如果集合名称包含空格或连字符,以数字开头或与内置函数冲突:
所述mongo
壳提示具有4095码点用于每个线的限制。如果您输入的行包含4095个以上的代码点,则Shell会截断它。
有关mongo
shell中MongoDB基本操作的更多文档
,请参阅:
[1] | 如果部署使用访问控制运行,则该操作将根据用户权限返回不同的值。有关详细信息,请参见 listDatabases行为。 |
该db.collection.find()
方法将光标返回到结果。但是,在mongo
外壳程序中,如果未使用var
关键字将返回的游标分配给变量,则该游标将自动迭代最多20次,以打印最多与查询匹配的前20个文档。该mongo
外壳会提示迭代另一个20倍。Type it
要格式化打印结果,可以将添加.pretty()
到操作中,如下所示:
此外,您可以在mongo
外壳程序中使用以下显式打印方法
:
print()
打印而不格式化print(tojson(<obj>))
以JSON格式打印并等效于printjson()
printjson()
以JSON格式打印并等效于print(tojson(<obj>))
有关mongo
外壳程序中光标处理的更多信息和示例
,请参阅在mongo Shell中迭代光标。另请参阅
“光标帮助”以获取Shell中光标帮助的列表
mongo
。
该mongo
外壳支持键盘快捷键。例如,
使用向上/向下箭头键滚动浏览命令历史记录。有关该文件的更多信息,请参见
.dbshell文档.dbshell
。
使用<Tab>
自动完成或列出完成的可能性,如下面的例子使用<Tab>
来完成方法名开头字母'c'
:
因为有很多以字母开头的收集方法
'c'
,所以<Tab>
将会列出以开头的各种方法
'c'
。
有关快捷键的完整列表,请参见Shell键盘快捷键。