mongo Shell 快速参考

在本页面

[success] Note

下面的文档是MongoDB服务器下载arrow-up-right.中包含的mongoarrow-up-right shell。有关新的MongoDB Shell ,mongosh的信息,请参考mongosh文档arrow-up-right

要了解这两种shell的区别,请参阅Comparison of the mongo Shell and mongosharrow-up-right.

mongo Shell命令历史

您可以使用上下箭头键检索在 mongoarrow-up-right shell中发布的先前命令。 命令历史记录存储在**〜/ .dbshell**文件中。 有关更多信息,请参见.dbshellarrow-up-right

命令行选项

mongoarrow-up-right shell可以使用许多选项启动。 有关所有可用选项的详细信息,请参见mongo shellarrow-up-right 页面。

下表显示了mongo的一些常用选项:

选项
说明

显示命令行选项

在不连接数据库的情况下启动mongo shell。 要稍后连接,请参阅Opening New Connectionsarrow-up-right

与JavaScript文件(即<file.js>])结合使用,以在运行JavaScript文件后在mongo shell中继续。 有关示例,请参见 JavaScript filearrow-up-right

命令助手

mongoarrow-up-rightshell提供了各种帮助。下表显示了一些常见的帮助方法和命令:

帮助方法和命令
描述

help()

打印当前数据库的列表

打印当前数据库的所有角色的列表,包括用户定义的角色和内置角色。

db.<collection>.help()

打印耗时1毫秒或更长时间的五个最新操作。 有关更多信息,请参见数据库分析器上的文档。

show dbs

打印所有可用数据库的列表。 该操作对应于listDatabasesarrow-up-right命令。 如果部署使用访问控制运行,则该操作将根据用户权限返回不同的值。 有关详细信息,请参见 listDatabasesarrow-up-right

use<db>

将当前数据库切换到<db>。 mongoarrow-up-right shell变量db设置为当前数据库。

show collections

打印当前数据库的所有集合的列表。 另可参考: show collectionsarrow-up-right

show users

打印当前数据库列表

show roles

打印当前数据库的所有角色的列表,包括用户定义角色和内置角色。

show profile

打印耗时1毫秒或更长时间的五个最新操作。 有关更多信息,请参见 database profilerarrow-up-right

show databases

打印所有可用数据库的列表。 该操作对应于 listDatabasesarrow-up-right 命令。 如果部署使用访问控制运行,则该操作将根据用户权限返回不同的值。 有关详细信息,请参见 listDatabasesarrow-up-right

load()

执行一个JavaScript文件。 有关更多信息,请参见 Write Scripts for the mongo Shellarrow-up-right

Shell基本JavaScript操作

mongoarrow-up-right shell提供了用于数据库操作的JavaScript APIarrow-up-right

在mongo shell中,db是引用当前数据库的变量。该变量自动设置为默认数据库测试,或者在**use <db>**切换当前数据库时设置。

下表显示了一些常见的JavaScript操作:

JavaScript数据库操作
说明

如果以安全模式运行,请对用户进行身份验证。

coll = db.<collection>

将当前数据库中的特定集合设置为变量coll,如以下示例所示: coll = db.myCollection; 您可以使用变量在myCollection上执行操作,如以下示例所示: coll.find();

查找集合中的所有文档并返回一个游标。 有关更多信息和示例,请参见db.collection.find()和查询文档。 有关在mongo shell中处理游标的信息,请参阅在mongo Shell中迭代游标。

将新文档插入集合中。

将多个新文档插入集合中。

更新集合中的单个现有文档。

更新集合中的多个现有文档。

插入新文档或更新集合中的现有文档。

从集合中删除单个文档。

从集合中删除多个文档

完全删除或除去集合。

如果索引不存在,则在集合上创建一个新索引;否则,该操作无效。

使用相同的连接返回对另一个数据库的引用,而无需显式切换当前数据库。 这允许跨数据库查询。

有关在shell中执行操作的更多信息,请参见:

键盘快捷键

shell提供了大多数键盘快捷键,类似于bash shellEmacs中的快捷键。 对于某些功能,mongoarrow-up-right 提供了多个键绑定,以适应几种熟悉的范例。

下表列举了 mongoarrow-up-right shell支持的按键:

按键
功能

Up-arrow

以前的历史

Down-arrow

下一个历史

Home

行起点

End

行尾

Tab

自动完成

Left-arrow

后退字符

Right-arrow

向前字符

Ctrl-left-arrow

后向词

Ctrl-right-arrow

前向词

Meta-left-arrow

后向词

Meta-right-arrow

前向词

Ctrl-A

上线

Ctrl-B

向后字符

Ctrl-C

退出

Ctrl-D

删除字符(或退出)

Ctrl-E

行结束

Ctrl-F

转发字符

Ctrl-G

中止

Ctrl-J

接受线

Ctrl-K

杀死线

Ctrl-L

清除屏幕

Ctrl-M

接受线

Ctrl-N

下一个历史记录

Ctrl-P

以前的历史记录

Ctrl-R

反向搜索历史

Ctrl-S

正向搜索历史

Ctrl-T

转置字符

Ctrl-U

丢弃Unix线

Ctrl-W

Unix单词清除

Ctrl-Y

拉动

Ctrl-Z

挂起(作业控制在Linux中有效)

Ctrl-H (i.e. Backspace)

向后删除字符

Ctrl-I (i.e. Tab)

完成

Meta-B

后退词

Meta-C

大写词

Meta-D

杀死命令

Meta-F

转发字

Meta-L

小写词

Meta-U

大写词

Meta-Y

yank-pop

Meta-[Backspace]

撤销杀死命令

Meta-<

历史开始

Meta->

历史结束

查询

在mongo shell中,使用find()arrow-up-rightfindOne()arrow-up-right 方法执行读取操作。 find()arrow-up-right方法返回一个游标对象,mongoarrow-up-right shell对其进行迭代以在屏幕上打印文档。 默认情况下,mongoarrow-up-right 打印前20个结果。mongoarrow-up-right shell将提示用户“输入”以继续迭代接下来的20个结果。 下表提供了mongo shell中的一些常见读取操作:

读取操作
说明描述

在集合中找到符合<query>条件的文档。 如果未指定<query>条件或该条件为空(即{}),则读取操作将选择集合中的所有文档。 以下示例在用户集合中选择name字段等于“ Joe”的文档:coll = db.users;coll.find( { name: "Joe" } );有关指定<query>条件的更多信息,请参见: Specify Equality Conditionarrow-up-right.

查找符合<query>条件的文档,并仅返回<projection>中的特定字段。 以下示例从集合中选择所有文档,但仅返回名称字段和**_id字段。 除非明确指定不返回,否则始终返回_id**。 coll = db.users; coll.find({},{name:true}); 有关指定<projection>的更多信息,请参见Project Fields to Return from Queryarrow-up-right.。

以指定的<sort order>返回结果。 以下示例从集合中选择所有文档,并返回按名称字段升序+1排序的结果。 使用-1降序: coll = db.users; coll.find()。sort({name:1});

以指定的<sort order>返回符合<query>条件的文档。

将结果限制为<n>行。 如果只需要一定数量的行以获得最佳性能,则强烈建议使用。

返回集合中的文档总数。

返回与查询匹配的文档总数。 count()arrow-up-right忽略limit()arrow-up-rightskip()arrow-up-right.例如,如果有100条记录匹配,但限制为10,则count()arrow-up-right将返回100。这比迭代自己的速度更快,但仍然需要时间。

查找并返回一个文档。 如果找不到,则返回null。 以下示例在用户集合中选择一个名称与“ Joe”匹配的文档: coll = db.users; coll.findOne({name:“ Joe”}); 在内部,findOne()arrow-up-right方法是带有limit(1)arrow-up-rightfind()arrow-up-right方法。

有关更多信息和示例,请参阅Query Documentsarrow-up-right 。 请参阅Query and Projection Operatorsarrow-up-right

错误检查方法

mongo shell write方法将Write Concern直接集成到方法执行中,并返回一个**WriteResult()**对象,该对象包含操作结果,包括所有写错误和写关注错误。

行政命令助手

下表列出了一些支持数据库管理的常用方法:

JavaScript数据库管理
方法说明

获取当前数据库中所有集合的列表。

删除当前数据库。

另请参见administrative database methodsarrow-up-right以获取方法的完整列表。

打开其他连接

您可以在mongo shell中创建新的连接。 下表显示了创建连接的方法:

JavaScript连接创建方法
说明

db = connect("<host><:port>/<dbname>")

打开一个新的数据库连接。

conn = new Mongo() db = conn.getDB("dbname")

使用新的Mongo()打开与新服务器的连接。 使用连接的getDB()方法选择数据库。

另请参阅 Opening New Connectionsarrow-up-right以获取有关从mongo shell打开新连接的更多信息。

多样式

下表显示了一些其他方法:

方法
描述

Object.bsonsize(<document>)

Prints the BSONarrow-up-right size of a <document> in bytes

其他资源

考虑以下解决mongo shell及其接口的参考资料:

另外,MongoDB源代码存储库包括一个jstestsarrow-up-right目录,该目录包含许多mongo shell脚本。

译者:王恒

校对:杨帅

最后更新于