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 脚本。