mongo shell(1)——概述

mongo shell是MongoDB的一款交互式JavaScript接口。您能用mongo shell来查询和更新数据及执行管理操作。
--注意:
1)下述文档属于包含在MongoDB服务器下载中的mongo shell。有关新MongoDB shell——mongosh的信息,请参考mongosh文档。想了解两个shell间的差别,请参考后述mongo shell和mongosh比较部分。
一.下载mongo shell
mongo shell作为MongoDB服务器安装一部分被包含其中。如果您已安装服务器,mongo shell就已被安装在服务器二进制文件所在的同样位置。另外,如果您想单独下载mongo shell,您可以按照如下步骤作为单独包安装mongo shell:
1.访问您MongoDB版本相应的下载中心:
MongoDB Community Download Center
MongoDB Enterprise Download Center
2.从下拉框选择您喜欢的版本和平台。
3.根据您的平台选择下载安装包:
Platform      Download Package
Windows    Select the zip package to download an archive which includes the mongo shell.
macOS      Select the tgz package to download an archive which includes the mongo shell.
Linux         Select the tgz package to download the mongo shell.
4.将mongo shell拷贝至您文件系统的某个位置。

二.启动mongo shell并连接至MongoDB
一旦下载了mongo shell,您就可以用它连接正在运行的MongoDB服务器。
--注意:
1)从MongoDB4.2(和4.0.13)开始,当mongo shell连接非正版MongoDB实例时将显示一条警告信息,因为这些实例与官方MongoDB实例相比也许有不同的行为;例如:功能缺失或不完整,功能行为不同等。
1.前提条件
1)mongo shell连接到MongoDB服务器前,服务器必须已被安装和运行。如果需要,可以按照您相应平台安装指导中的步骤安装和启动MongoDB服务器。
2)一旦您确认mongod服务器已经运行,打开终端窗口(或windows的命令提示符),并进入您的mongo shell的安装目录(<mongo shell installation dir>):
cd <mongo shell installation dir>
--提示:
1)将您的mongo shell安装目录添加至PATH环境变量将允许您直接打mongo命令,而无需先进入到mongo shell安装目录或确定二进制命令的绝对路径。另外,您也可以将mongo shell二进制文件拷贝至已添加至PATH中的文件系统的某个位置,像linux系统的/usr/bin。
2.默认端口的本地MongoDB实例
您可以用没有任何命令行选项的mongo shell连接到运行在本地机默认端口27017上的MongoDB实例。具体如下所示:
$ mongo
3.非默认端口的本地MongoDB
为了显式指定端口,需要包含命令行选项--port。例如:连接到本地机端口28015上运行的MongoDB实例。
$ mongo --port 28015
4.远程机上的MongoDB实例
1)为了显式指定主机名和/或端口,您能确定一个连接串。例如:连接到运行在远程机上的MongoDB实例。
$ mongo "mongodb://mongodb0.example.com:28015"
2)您能用命令行选项--host<host>:<port>。例如:连接到运行在远程机上的MongoDB实例:
$ mongo --host mongodb0.example.com:28015
3)您能用--host <host>和--port <port>命令行选项。例如:连接到运行在远程机上的MongoDB实例:
$ mongo --host mongodb0.example.com --port 28015
4.启用认证的MongoDB实例
为了连接到需要认证的MongoDB实例:
1)您能在连接串中指定用户名、认证数据库和可选的密码。例如:连接和认证到远程MongoDB实例的用户alice:
--注意:
1)如果您在连接传中没指定密码,shell将会提示您输入密码。
$ mongo "mongodb://alice@mongodb0.examples.com:28015/?authSource=admin"
2)您能用--username <user>和--password,--autenticationDatabase <db>命令行选项。例如:连接和认证到远程MongoDB实例的用alice:
--注意:
1)如果您没为--password选项指定用户密码,shell将会提示您输入密码。
$ mongo --username alice --password --authenticationDatabase admin --host mongodb0.examples.com --port 28015
5.连接到MongoDB副本集(Replica Set)
为了连接到MongoDB副本集:
1)您能在连接串中指定副本集名字和成员。
$ mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"
2)如果使用DNS Seedlist连接格式,您能指定连接串:
$ mongo "mongodb+srv://server.example.com/"
--注意:
1)使用+srv连接串修饰符自动设置连接的ssl选项为true。
3)您能通过--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
6.TLS/SSL连接
为了使用TLS/SSL连接:
1)您可以在连接串中指定ssl=true选项。
$ mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA&ssl=true"
2)如果使用DNS Seedlist连接格式,您能包含+srv连接串修饰符:
$ mongo "mongodb+srv://server.example.com/"
--注意:
1)用+srv连接串修饰符自动将连接的ssl选项设置为true。
3)您能用--ssl命令行选项。例如:连接到名为replA的副本集:
$ mongo --ssl --host replA/mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017

三.使用mongo shell
1.基本操作
1)为了显式您正使用的数据库,键入db:
> db
该命令应该返回test,其为默认数据库。
2)为了切换数据库,用use <db>命令,如下所示:
> use <database>
3)为了不切换数据库而从当前数据库访问其他不同数据库,可以使用db.getSiblingDB()方法。
4)为了列出用户可用的数据库,可以使用show dbs命令。
5)您可以切换到不存在的数据库。当您第一次往该数据库存储数据时,像创建集合,MongoDB就会创建该数据库。例如:下面在insertone()操作期间创建数据库myNewDatabase和集合myCollection:
use myNewDatabase
db.myCollection.insertOne( { x: 1 } );
db.myCollection.insertone()为mongo shell中一个可用的方法。其中,db指当前数据库,myCollection为集合的名字。
6)如果mongo shell不接受一个集合的名字,那么,可以使用db.getCollection()语法。例如:如果一个集合名中包含空格或连字符、以数字开始或与内建函数冲突:
db.getCollection("3 test").find()
db.getCollection("3-test").find()
db.getCollection("stats").find()
7)mongo shell提示符有每行最大4095码点限制。如果您键入超过该限制的命令行,shell将会截断它。
2.格式化打印结果
db.collection.find()方法返回结果的一个游标;但是,mongo shell中,如果返回的游标不用关键字var分配到一个变量,那么,游标自动循环打印匹配该查询的前20个文档。mongo shell将提示输入it以再循环打印另20个文档。
为了格式化打印的结果,可以为该操作增加.pretty()方法,如下所示:
> db.myCollection.find().pretty()
另外,您能在mongo shell中用下列显示打印方法:
1)print()无格式化打印;
2)print(tojson(<obj>))以JSON格式打印,其等同于printjson();
3)printjson()以JSON格式打印,其等同于print(tojson(<obj>))。
3.mongo shell中多行操作
如果您以左括号('(')、左大括号('[')或左中括号('[')结束一行,那么,后续的行将以省略号("...")开始,直到遇到相应的右括号(')')、右大括号('}') 或右中括号(']')。mongo shell在评估该代码前,将会等待该右括号、右大括号或右中括号,如下所示:

> if ( x > 0 ) {
... count++;
... print (x);
... }
如果遇到两个空行,则您能退出该行继续模式,如下所示:
> if (x > 0
...
...
>

四.Tab完成和其他快捷键
mongo shell支持快捷键,例如:
1.用上下箭头键翻命令历史。
2.用<Tab>自动完成或列出完成的可能性,像如下例子中用<Tab>完成以字母'c'开头的方法名:
db.myCollection.c<Tab>
因为有很多集合方法一字母'c'开头,<Tab>将列出各种以'c'开头的方法。

五. .mongorc.js文件
mongo启动时会检查用户主目录下名叫.mongorc.js的JavaScript文件。如果发现,mongo第一次显示提示符前解释.mongorc.js的内容。如果您用shell评估JavaScript文件或表达式,用--eval命令行选项或指定.js文件,mongo将在完成JavaScript处理后读取.mongorc.js文件。您可以通过--norc选项阻止.mongorc.js的加载。

六.退出shell
为了退出shell,键入quit()或用<Ctrl-C>快捷键。

七.mongo shell与mongosh比较
--注意:
1)mongosh目前作为Beta版本使用。Beta版本测试期间,可能会对产品、特性及相应文档进行修改。
新MongoDB shell,mongosh,提供比mongo shell更多的有点,例如:
1.改善的语法高亮显示;
2.改善的命令历史;
3.改善的日志;
测试阶段,mongosh支持mongo shell的部分方法。目前正努力实现mongosh和mongo shell间的等同特性。
为了维护向后兼容,mongosh支持的方法使用mongo shell中相应方法的相同语法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhdz_bj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值