前言
此篇博文是 Mongdb 基础系列之一;对 mongo Shell 的基础内容进行描述;
本文为作者的原创作品,转载需注明出处;
简介
mongo shell 是一个与 MongoDB 进行交互的 javascript 接口程序;mongo shell 是 MongoDB distributions 中的一个模块,所以一旦你已经成功安装并启动了 MongoDB,那么就可以直接使用 mongo shell 来连接你的 MongoDB 实例了;
启动
如何连接本地的 MongoDB instance,
进入你的 <mongodb installation dir>
1
$ cd <mongodb installation dir>
连接
1
$ ./bin/mongo
If you have added the <mongodb installation dir>/bin to the PATH environment variable, you can just type mongo instead of ./bin/mongo.
启动选项
When you run mongo without any arguments, the mongo shell will attempt to connect to the MongoDB instance running on the localhost interface on port 27017. To specify a different host or port number, as well as other options, see examples of starting up mongo and mongo reference which provides details on the available options.
注意,如果直接在命令行中使用 mongo 而不跟任何的参数,那么 mongo shell 将会试图连接默认配置既是 localhost:27017
本地测试
如前文所介绍的那样启动 MongoDB,
1 | $ mongod --dbpath ~/data/mongodb |
然后,使用默认的方式启动 mongo shell,
1 | $ mongo |
这样,我们就可以在命令行中输入我们的指令了;
.mongorc.js File
每次 mongo shell 启动的时候都会从 HOME 的根路径中查找一个默认的名为 .mongorc.js javascript 文件,如果找到了该文件,mongo shell 会首先解释执行其中的内容,然后再进入命令提示行;.mongorc.js 文件中可以定义参数,自定义输出格式等等;除了通过 .mongorc.js 文件来初始化 mongo shell 的启动环境参数,还可以通过使用 –eval 或者显示的为 mongo shell 指定一个启动参数文件 的方式来进行;
如果你不想通过配置文件去预加载任何的参数配置,使用 –norc 选项;
参考用例自定义 Prompt 看看它的实用场景;
使用
db
继续本地测试中的步骤,在命令行中输入 db 命令,
1 | > db |
返回当前所使用
的 database;默认情况下,使用的是 database test
;
show dbs
1 | > show dbs |
显示当前所有可用的 databases;
use <database>
如果需要切换当前的 database,使用命令
1 | > use <database> |
可以切换到一个不存在的 database 上,当你第一次在该 database 上存储数据的时候,比如创建一个 collection,过程中MongoDB 会自动的创建
该 database;参考下面这个例子,
1 | > use myNewDatabase |
切换到一个不存在的 database myNewDatabase 中,然后通过 insertOne() 方法为 myCollection 插入一个元素;上面这个例子有意思的是,过程中不仅仅会自动创建 database,同时会创建 collection;还需要注意如下两点,
- db
表示当前的 database myNewDatabase; - myCollection
该 database 所对应的 collection;
db.<collection>
另外,如果命令 db 不能接有敏感字符的 collection name,比如以数字开头,包含了空格等等;可以使用如下的方式来访问,
1 | >db["3test"].find() |
不过我的疑问是,为什么 MongoDB 不对这种情况进行禁用?
格式化输出
db.collection.find() 方法将会返回结果的一个 cursor;在 mongo shell 中,如果该 cursor 没有赋值给一个经过 var 声明的变量,那么 mongo shell 将会自动的打印出前 20 个结果,然后根据提示输出下一批结果集;
使用 .pretty() 操作来将结果进行格式化输出,
1 | > db.myCollection.find().pretty() |
通过 mongo shell,可以显示进行格式化调用的方法有,
print()
to print without formattingprint(tojson(<obj>))
to print with JSON formatting and equivalent to printjson()printjson()
to print with JSON formatting and equivalent toprint(tojson(<obj>)
)
For more information and examples on cursor handling in the mongo shell, see Iterate a Cursor in the mongo Shell. See also Cursor Help for list of cursor help in the mongo shell.
Multi-line Operations in the mongo Shell
在 mongo shell 中可以输入 javascript 代码,如果代码换行没有完成,将会以 … 前缀表示;
1 | > if ( x > 0 ) { |
Tab 以及其他的快捷键
The mongo shell supports keyboard shortcuts. For example,
- Use the up/down arrow keys to scroll through command history. See .dbshell documentation for more information on the .dbshell file.
- Use
<Tab>
to autocomplete or to list the completion possibilities, as in the following example which usesto complete the method name starting with the letter ‘c’:
1 db.myCollection.c<Tab>
Because there are many collection methods starting with the letter ‘c’, the
<Tab>
will list the various methods that start with ‘c’.For a full list of the shortcuts, see Shell Keyboard Shortcuts
退出
在命令行中使用命令 quit() 或者使用快捷键 CTRL + D 退出;