On this page
mongo Shell 快速参考
在本页面
mongo Shell 命令历史记录
您可以使用向上和向下箭头键检索在mongo shell 中发出的先前命令。命令历史记录存储在~/.dbshell
文件中。有关更多信息,请参见.dbshell。
命令行选项
mongo shell 可以使用许多选项启动。有关所有可用选项的详细信息,请参见mongo shell页。
下表显示了mongo的一些常用选项:
要稍后连接,请参阅打开新连接。
| --shell |与 JavaScript 文件(即<file.js>)结合使用,以在运行 JavaScript 文件后在mongo shell 中 continue。
有关示例,请参见JavaScript file。
Command Helpers
mongo shell 提供了各种帮助。下表显示了一些常见的帮助方法和命令:
帮助方法和命令 | Description |
---|---|
help |
Show help. |
db.help() | 显示有关数据库方法的帮助。 |
db.<collection>.help() |
在收集方法上显示帮助。 <collection> 可以是现有集合或不存在集合的名称。 |
show dbs |
打印服务器上所有数据库的列表。 |
use <db> |
将当前数据库切换到<db> 。 mongo shell 变量db 设置为当前数据库。 |
show collections |
打印当前数据库的所有集合的列表 |
show users |
打印当前数据库的用户列表。 |
show roles |
打印当前数据库的所有角色的列表,包括用户定义角色和内置角色。 |
show profile |
打印耗时 1 毫秒或更长时间的五个最新操作。有关更多信息,请参见database profiler上的文档。 |
show databases |
打印所有可用数据库的列表。 |
load() |
执行一个 JavaScript 文件。有关更多信息,请参见为 mongo Shell 编写脚本。 |
基本的 Shell JavaScript 操作
mongo shell 为数据库操作提供JavaScript API。
在mongo shell 中,db
是引用当前数据库的变量。该变量将自动设置为默认数据库test
或在使用use <db>
切换当前数据库时设置。
下表显示了一些常见的 JavaScript 操作:
JavaScript 数据库操作 | Description |
---|---|
db.auth() | 如果以安全模式运行,请对用户进行身份验证。 |
coll = db.<collection> |
将当前数据库中的特定集合设置为变量coll ,如以下示例所示: |
coll = db.myCollection; 您可以使用变量在 myCollection 上执行操作,如以下示例所示:coll.find(); |
|
db.collection.find() | 查找集合中的所有文档并返回游标。 有关更多信息和示例,请参见db.collection.find()和Query Documents。 有关在mongo shell 中处理光标的信息,请参见在 mongo Shell 中迭代游标。 |
db.collection.insertOne() | 将新文档插入集合中。 |
db.collection.insertMany() | 将多个新文档插入到集合中。 |
db.collection.updateOne() | 更新集合中的单个现有文档。 |
db.collection.updateMany() | 更新集合中的多个现有文档。 |
db.collection.save() | 插入新文档或更新集合中的现有文档。 |
db.collection.deleteOne() | 从集合中删除单个文档。 |
db.collection.deleteMany() | 从集合中删除文档。 |
db.collection.drop() | 完全删除或删除集合。 |
db.collection.createIndex() | 如果索引不存在,则在集合上创建新索引;否则,该操作将无效。 |
db.getSiblingDB() | 使用相同的连接返回对另一个数据库的引用,而无需显式切换当前数据库。这允许跨数据库查询。 |
有关在 shell 中执行操作的更多信息,请参见:
Keyboard Shortcuts
mongo shell 提供的大多数键盘快捷键类似于在bash
shell 或 Emacs 中找到的快捷键。对于某些功能,mongo提供了多个键绑定,以适应几种熟悉的范例。
下表列举了mongo shell 支持的击键:
Keystroke | Function |
---|---|
Up-arrow | previous-history |
Down-arrow | next-history |
Home | beginning-of-line |
End | end-of-line |
Tab | autocomplete |
Left-arrow | backward-character |
Right-arrow | forward-character |
Ctrl-left-arrow | backward-word |
Ctrl-right-arrow | forward-word |
Meta-left-arrow | backward-word |
Meta-right-arrow | forward-word |
Ctrl-A | beginning-of-line |
Ctrl-B | backward-char |
Ctrl-C | exit-shell |
Ctrl-D | delete-char(或退出 Shell) |
Ctrl-E | end-of-line |
Ctrl-F | forward-char |
Ctrl-G | abort |
Ctrl-J | accept-line |
Ctrl-K | kill-line |
Ctrl-L | clear-screen |
Ctrl-M | accept-line |
Ctrl-N | next-history |
Ctrl-P | previous-history |
Ctrl-R | reverse-search-history |
Ctrl-S | forward-search-history |
Ctrl-T | transpose-chars |
Ctrl-U | unix-line-discard |
Ctrl-W | unix-word-rubout |
Ctrl-Y | yank |
Ctrl-Z | 挂起(作业控制在 Linux 中有效) |
Ctrl-H(即 Backspace) | backward-delete-char |
Ctrl-I(即 Tab) | complete |
Meta-B | backward-word |
Meta-C | capitalize-word |
Meta-D | kill-word |
Meta-F | forward-word |
Meta-L | downcase-word |
Meta-U | upcase-word |
Meta-Y | yank-pop |
Meta-[Backspace] | backward-kill-word |
Meta-< | beginning-of-history |
Meta-> | end-of-history |
Queries
在mongo Shell 中,使用find()和findOne()方法执行读取操作。
find()方法返回一个游标对象,mongo Shell 对其进行迭代以在屏幕上打印文档。默认情况下,mongo打印前 20 个结果。mongo Shell 将提示用户“ Type it
”以 continue 迭代接下来的 20 个结果。
下表提供了mongo shell 中的一些常见读取操作:
Read Operations | Description |
---|---|
db.collection.find(<query>) | 在集合中找到符合<query> 条件的文档。如果未指定<query> 条件或该条件为空(即{} ),则读取操作将选择集合中的所有文档。 |
以下示例在users
集合中选择name
字段等于"Joe"
的文档:
coll = db.users;
coll.find({ name: "Joe" });
有关指定<query>
标准的更多信息,请参见指定平等条件。
| db.collection.find(<query>, <projection>) |查找符合<query>
条件的文档,并仅返回<projection>
中的特定字段。
下面的示例从集合中选择所有文档,但仅返回name
字段和_id
字段。除非明确指定不返回_id
,否则始终返回。
coll = db.users;
coll.find({ },);
有关指定<projection>
的更多信息,请参见从查询返回的项目字段。
| db.collection.find().sort(<sort order>) |返回指定的<sort order>
的结果。
以下示例从集合中选择所有文档,并返回按name
字段升序(1
)排序的结果。使用-1
降序排列:
coll = db.users;
coll.find()。sort({ name: 1 }); |
| db.collection.find(<query>).sort(<sort order>) |返回指定的<sort order>
中符合<query>
条件的文档。
| db.collection.find(...)。limit( <n>) |将结果限制为<n>
行。如果只需要一定数量的行以获得最佳性能,则强烈建议使用。
| db.collection.find(...)。skip( <n>) |跳过<n>
个结果。|
| db.collection.count() |返回集合中的文档总数。
| db.collection.find(<query>).count() |返回与查询匹配的文档总数。
count()忽略limit()和skip()。例如,如果 100 条记录匹配,但限制为 10,则count()将返回 100.这比迭代自己的速度更快,但仍然需要时间。
| db.collection.findOne(<query>) |查找并返回单个文档。如果找不到,则返回 null。
下面的示例在users
集合中选择一个文档,其中name
字段与"Joe"
匹配:
coll = db.users;
coll.findOne({ name: "Joe" });
在内部,findOne()方法是具有limit(1)的find()方法。
有关更多信息和示例,请参见Query Documents文档。请参阅查询和投影运算符以指定其他查询运算符。
错误检查方法
在 2.6 版中进行了更改。
mongo shell 写方法现在将Write Concern直接集成到方法执行中,而不是使用单独的db.getLastError()方法。这样,write 方法现在返回一个WriteResult()对象,该对象包含操作结果,包括所有写错误和写关注错误。
以前的版本使用db.getLastError()和db.getLastErrorObj()方法返回错误信息。
Management 命令助手
下表列出了一些支持数据库 Management 的常用方法:
JavaScript 数据库 Management 方法 | Description |
---|---|
db.cloneDatabase(<host>) | 从指定的<host> 克隆当前数据库。 <host> 数据库实例必须处于 noauth 模式。 |
db.copyDatabase( <from>, <to>, <host>) | 将<from> 数据库从<host> 复制到当前服务器上的<to> 数据库。 |
<host>
数据库实例必须处于noauth
模式。
| db.fromColl.renameCollection(<toColl>) |将集合从fromColl
重命名为<toColl>
。参见Naming Restrictions。
| db.getCollectionNames() |获取当前数据库中所有集合的列表。
| db.dropDatabase() |删除当前数据库。
有关方法的完整列表,另请参见Management 数据库方法。
打开其他连接
您可以在mongo shell 中创建新连接。
下表显示了创建连接的方法:
JavaScript 连接创建方法 | Description |
---|---|
db = connect("<host><:port>/<dbname>") |
打开一个新的数据库连接。 |
conn =新的 Mongo() | |
db = conn.getDB(“ dbname”) |
使用new Mongo() 打开到新服务器的连接。使用连接的 getDB() 方法选择数据库。 |
另请参阅打开新连接,以获取有关从mongo shell 打开新连接的更多信息。
Miscellaneous
下表显示了一些其他方法:
Method | Description |
---|---|
Object.bsonsize(<document>) |
打印\ _2 的BSON大小(以字节为单位) |
Additional Resources
考虑以下针对mongo shell 及其接口的参考资料:
此外,MongoDB 源代码存储库包括一个jstests directory,其中包含许多mongo shell 脚本。