mongo Shell 快速参考
在本页面
[success] Note
下面的文档是MongoDB服务器下载.中包含的
mongo
shell。有关新的MongoDB Shell ,mongosh的信息,请参考mongosh文档。要了解这两种shell的区别,请参阅Comparison of the mongo Shell and mongosh.
mongo Shell命令历史
您可以使用上下箭头键检索在 mongo
shell中发布的先前命令。 命令历史记录存储在**〜/ .dbshell**文件中。 有关更多信息,请参见.dbshell 。
命令行选项
mongo
shell可以使用许多选项启动。 有关所有可用选项的详细信息,请参见mongo shell 页面。
下表显示了mongo的一些常用选项:
显示命令行选项
在不连接数据库的情况下启动mongo shell。 要稍后连接,请参阅Opening New Connections。
与JavaScript文件(即<file.js>])结合使用,以在运行JavaScript文件后在mongo shell中继续。 有关示例,请参见 JavaScript file。
命令助手
mongo
shell提供了各种帮助。下表显示了一些常见的帮助方法和命令:
help()
打印当前数据库的列表
打印当前数据库的所有角色的列表,包括用户定义的角色和内置角色。
db.<collection>
.help()
打印耗时1毫秒或更长时间的五个最新操作。 有关更多信息,请参见数据库分析器上的文档。
show dbs
打印所有可用数据库的列表。 该操作对应于listDatabases
命令。 如果部署使用访问控制运行,则该操作将根据用户权限返回不同的值。 有关详细信息,请参见 listDatabases。
use<db
>
将当前数据库切换到<db
>。 mongo
shell变量db设置为当前数据库。
show collections
打印当前数据库的所有集合的列表。 另可参考: show collections
show users
打印当前数据库列表
show roles
打印当前数据库的所有角色的列表,包括用户定义角色和内置角色。
show profile
打印耗时1毫秒或更长时间的五个最新操作。 有关更多信息,请参见 database profiler。
show databases
打印所有可用数据库的列表。 该操作对应于 listDatabases 命令。 如果部署使用访问控制运行,则该操作将根据用户权限返回不同的值。 有关详细信息,请参见 listDatabases。
load()
执行一个JavaScript文件。 有关更多信息,请参见 Write Scripts for the mongo Shell。
Shell基本JavaScript操作
mongo
shell提供了用于数据库操作的JavaScript API 。
在mongo shell中,db是引用当前数据库的变量。该变量自动设置为默认数据库测试,或者在**use <db
>**切换当前数据库时设置。
下表显示了一些常见的JavaScript操作:
如果以安全模式运行,请对用户进行身份验证。
coll = db.<collection
>
将当前数据库中的特定集合设置为变量coll,如以下示例所示: coll = db.myCollection; 您可以使用变量在myCollection上执行操作,如以下示例所示: coll.find();
查找集合中的所有文档并返回一个游标。 有关更多信息和示例,请参见db.collection.find()和查询文档。 有关在mongo shell中处理游标的信息,请参阅在mongo Shell中迭代游标。
将新文档插入集合中。
将多个新文档插入集合中。
更新集合中的单个现有文档。
更新集合中的多个现有文档。
插入新文档或更新集合中的现有文档。
从集合中删除单个文档。
从集合中删除多个文档
完全删除或除去集合。
如果索引不存在,则在集合上创建一个新索引;否则,该操作无效。
使用相同的连接返回对另一个数据库的引用,而无需显式切换当前数据库。 这允许跨数据库查询。
有关在shell中执行操作的更多信息,请参见:
键盘快捷键
shell提供了大多数键盘快捷键,类似于bash shell或Emacs中的快捷键。 对于某些功能,mongo
提供了多个键绑定,以适应几种熟悉的范例。
下表列举了 mongo
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()
和findOne()
方法执行读取操作。
find()
方法返回一个游标对象,mongo
shell对其进行迭代以在屏幕上打印文档。 默认情况下,mongo
打印前20个结果。mongo
shell将提示用户“输入”以继续迭代接下来的20个结果。
下表提供了mongo shell中的一些常见读取操作:
在集合中找到符合<query
>条件的文档。 如果未指定<query
>条件或该条件为空(即{}),则读取操作将选择集合中的所有文档。 以下示例在用户集合中选择name字段等于“ Joe”的文档:coll = db.users;coll.find( { name: "Joe" } );有关指定<query
>条件的更多信息,请参见: Specify Equality Condition.
查找符合<query
>条件的文档,并仅返回<projection
>中的特定字段。 以下示例从集合中选择所有文档,但仅返回名称字段和**_id字段。 除非明确指定不返回,否则始终返回_id**。 coll = db.users; coll.find({},{name:true}); 有关指定<projection
>的更多信息,请参见Project Fields to Return from Query.。
以指定的<sort order
>返回结果。 以下示例从集合中选择所有文档,并返回按名称字段升序+1排序的结果。 使用-1降序: coll = db.users; coll.find()。sort({name:1});
以指定的<sort order
>返回符合<query
>条件的文档。
将结果限制为<n
>行。 如果只需要一定数量的行以获得最佳性能,则强烈建议使用。
跳过<n
>个结果。
返回集合中的文档总数。
有关更多信息和示例,请参阅Query Documents 。 请参阅Query and Projection Operators。
错误检查方法
mongo shell write方法将Write Concern直接集成到方法执行中,并返回一个**WriteResult()**对象,该对象包含操作结果,包括所有写错误和写关注错误。
行政命令助手
下表列出了一些支持数据库管理的常用方法:
另请参见administrative database methods以获取方法的完整列表。
打开其他连接
您可以在mongo shell中创建新的连接。 下表显示了创建连接的方法:
db = connect("<host
><:port>/<dbname
>")
打开一个新的数据库连接。
conn = new Mongo() db = conn.getDB("dbname")
使用新的Mongo()打开与新服务器的连接。 使用连接的getDB()方法选择数据库。
另请参阅 Opening New Connections以获取有关从mongo shell打开新连接的更多信息。
多样式
下表显示了一些其他方法:
Object.bsonsize(<document
>)
Prints the BSON size of a <document
> in bytes
其他资源
考虑以下解决mongo shell及其接口的参考资料:
另外,MongoDB源代码存储库包括一个jstests目录,该目录包含许多mongo shell脚本。
译者:王恒
校对:杨帅
最后更新于