【MongoDB】The mongo Shell

本章内容

  • 启动mongo Shell并连接到MongoDB
  • 使用mongo Shell
  • 制表符补全命令和其他键盘快捷键
  • .mongorc.js文件
  • 退出shell

mongo shell是用于连接MongoDB的交互式JavaScript接口。通过mongo shell可以查询、更新数据以及执行数据库管理操作。

mongo shell包含在MongoDB Server的安装的文件内。 MongoDB也提供mongo shell的独立软件包。要下载独立的mongo shell软件包:

  1. 打开下载中心。对于mongo Enterprise Shell,选择MongoDB Enterprise Server选项卡。
  2. 从下拉列表中选择您的软件版本和操作系统。
  3. 根据您的平台环境下载相应的软件包:

平台

下载包

Windows

选择ZIP软件包,下载包含mongo shell的文档包。

macOS

选择TGZ软件包,下载包含mongo shell的文档包。

Linux

选择shell软件包,下载mongo shell。

安装并启动MongoDB之后,就可以将mongo shell连接到正在运行的MongoDB实例。

注意

从MongoDB 4.2(和4.0.13)开始,当连接到非正版( non-genuine)MongoDB实例时,mongo shell将显示警告消息,因为这些实例的行为可能与官方MongoDB实例不同。例如缺失的或不完整的功能,不同的功能行为等。

一、启动mongo Shell并连接到MongoDB

1.启动shell的准备工作

在尝试启动mongo shell之前,请确保MongoDB正在运行。

打开一个终端窗口(或Windows的命令提示符),然后转到<mongodb安装目录> / bin目录:

cd <mongodb installation dir>/bin

提示

将<mongodb安装目录> / bin添加到PATH环境变量中,您可以键入mongo,而不必转到<mongodb安装目录> / bin目录或指定二进制文件的完整路径。

2.通过默认端口连接本地MongoDB实例

可以在没有任何命令行选项的情况下运行mongo shell,使用默认端口27017连接到在本地主机上运行的MongoDB实例:

mongo

3.通过非默认端口连接本地MongoDB实例

要显式指定端口,应包括--port命令行选项。例如,要使用端口30000连接到在localhost上运行的MongoDB实例,请执行以下操作:

mongo --port 30000

4.连接远程主机上的MongoDB实例

要连接到在远程主机上运行的MongoDB实例,需要明确指定主机名和/或端口号,有如下三种方式:

mongo "mongodb://mongodb0.example.com:30000"

mongo  --host mongodb0.example.com: 30000

mongo --host mongodb0.example.com  --port 30000

备注

<host>可以是主机名、域名、IP地址。

5.连接具有身份验证的MongoDB实例

当要连接到MongoDB实例,需要进行身份验证时,有如下两种方式:

  • 在连接字符串中指定用户名,身份验证数据库以及可选的密码。例如,以simman用户身份认证连接到远程MongoDB数据库simman:

注意

如果未在连接字符串中指定密码,则外壳程序将提示您输入密码。

mongo "mongodb://simman@iZ2549m20n1Z:30000/?authSource=simman"

 

注意

如果您指定--password而不输入用户密码,则外壳程序将提示您输入密码。

 

mongo --host iZ2549m20n1Z --port 30000 --username simman --password --authenticationDatabase simman

6.连接到MongoDB副本集

要连接到副本集:

  • 在连接字符串中指定副本集名称和成员。
mongo "mongodb://10.171.17.227:20000,10.171.30.102:20000,10.171.94.133:20000/?replicaSet=cfgReplSet"

 

mongo "mongodb+srv://server.example.com/"

注意

对于连接,使用+ srv连接字符串修饰符会自动将ssl选项设置为true。

  • 在命令行选项中指定副本集名称和成员:--host <副本集名称> / <host1>:<port1>,<host2>:<port2>,...。例如,要连接到名为cfgReplSet的副本集,请执行以下操作:
mongo --host cfgReplSet/10.171.17.227:20000,10.171.30.102:20000,10.171.94.133:20000

7.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参考资料启动mongo示例

 

二、使用mongo Shell

  • 要显示您正在使用的数据库,请输入db
db

该操作应返回test,这是默认数据库。

  • 要切换数据库,请使用use <db>助手,如以下示例所示:
use <database>

另请参见db.getSiblingDB()方法,从当前数据库访问其他数据库,而无需切换当前数据库上下文(即db)。

  • 要列出用户可用的数据库,请使用助手 show dbs。 [1]

您可以切换到不存在的数据库。首次将数据存储在数据库中(例如通过创建集合)时,MongoDB会创建数据库。例如,以下代码在insertOne()操作期间创建数据库myNewDatabase和集合myCollection:

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()

mongo shell提示符每行的限制为4095个码点。如果您输入的行包含4095个以上的码点,则Shell会截断它。

有关mongo shell中MongoDB基本操作的更多文档,请参阅:

  1. 入门指南
  2. 插入文档(documents
  3. 查询文档(documents
  4. 更新文档(documents
  5. 删除文档 ( documents )
  6. mongo Shell方法

[1]如果部署使用访问控制权限,则该操作将根据用户权限返回不同的值。有关详细信息,请参见listDatabases行为

1.输出结果的格式化

db.collection.find()方法将游标返回到结果。但是,在mongo shell中,如果未使用var关键字将返回的游标分配给变量,则该游标将自动迭代多达20次,以最多打印与查询匹配的前20个文档。 mongo shell将提示“键入它”以使其再迭代20次。

要格式化打印结果,可以将.pretty()添加到操作中,如下所示:

db.myCollection.find().pretty()

另外,您可以在mongo shell中使用以下显式打印方法:

  • Print () 无需格式化即可打印
  • print (tojson(<obj>) )以JSON格式打印,等同于printjson()
  • printjson ()  以JSON格式打印,等同于print(tojson(<obj>))

有关在mongo shell中处理游标的更多信息和示例,请参阅在mongo Shell中迭代游标。另请参阅游标帮助文档,以获取mongo shell中的游标帮助列表。

2.mongo Shell中的多行操作

如果您以开括号('('),大括号('{')或开括号('[')结束一行,则后续各行以省略号(“ ...”)开头,直到您输入相应的右括号(')',右括号('}')或右括号(']')。 mongo shell在评估代码之前等待右括号(')',右括号('}')或右括号(']'),如以下示例所示:

> if ( x > 0 ) {

... count++;

... print (x);

... }

如果输入两个空行,则可以退出行继续模式,如以下示例所示:

> if (x > 0

...

...

>

三、制表符补全命令和其他键盘快捷键

mongo shell支持键盘快捷键(shortcuts)。例如,

  • 使用up/down箭头键滚动浏览命令历史记录。有关.dbshell文件的更多信息,请参见.dbshell文档。
  • 使用<Tab>来自动补全或列出完整的可能性信息,如以下示例中所示,该示例使用<Tab>来完成以字母'c'开头的方法名称:
db.myCollection.c<Tab>

因为有很多以字母'c'开头的集合方法,所以<Tab>将列出所有以'c'开头的方法。

有关快捷键的完整列表,请参见Shell键盘快捷键

四、.mongorc.js文件

启动时,mongo会在用户的HOME目录中检查名为.mongorc.js的JavaScript文件。 如果找到,mongo会在首次显示提示之前解释.mongorc.js的内容。 如果您使用shell程序来评估JavaScript文件或表达式,或者通过在命令行上使用--eval选项,或者通过向mongo指定.js文件,则mongo将在JavaScript完成处理后读取.mongorc.js文件。 您可以使用--norc选项防止加载.mongorc.js。

五、退出shell

要退出shell,请键入quit()或使用<Ctrl-C>快捷方式。

 

也可以看看:

  1. 入门指南
  2. mongo参考

参考原文:https://docs.mongodb.com/manual/mongo/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值