- MongoDB官方文档中文版
 - MongoDB中文手册说明
 - MongoDB简介
 - 安装 MongoDB
 - The mongo Shell
 - MongoDB CRUD 操作
 - 聚合
 - 数据模型
 - 事务
 - 索引
 -  安全   
- 安全检查列表
 - 启用访问控制
 - 身份验证
 - 基于角色的访问控制
 - TLS / SSL(传输加密)
 - 静态加密
 - 客户端字段级加密
 - 审计
 - 网络和配置强化
 - 实现字段级别修订
 - 安全参考
 - 附录
 
 - 变更流
 - 复制
 - 分片   
- 分片键
 - 哈希分片
 - 范围分片
 - 区
 - 管理分片区
 - 按位置细分数据
 - 用于更改SLA或SLO的分层硬件
 - 按应用或客户细分数据
 - 仅插入工作负载的分布式本地写入
 - 管理分片区
 - 使用块进行数据分区
 - 在分片集群中拆分数据块
 
 - 管理
 -  存储   
-  存储引擎   
- 日志记录
 - 管理日志记录   
- GridFS
 
 
 - FAQ:MongoDB 存储
 
 -  存储引擎   
 - 参考   
- 运算符
 - 查询与映射运算符
 - 更新运算符
 - 聚合管道阶段
 -  聚合管道操作符   
- $abs (aggregation)
 - $acos (aggregation)
 - $acosh (aggregation)
 - $add (aggregation)
 - $addToSet (aggregation)
 - $allElementsTrue (aggregation)
 - $and (aggregation)
 - $anyElementTrue (aggregation)
 - $arrayElemAt (aggregation)
 - $arrayToObject (aggregation)
 - $asin (aggregation)
 - $asinh (aggregation)
 - $atan (aggregation)
 - $atan2 (aggregation)
 - $atanh (aggregation)
 - $avg (aggregation)
 - $ceil (aggregation)
 - $cmp (aggregation)
 - $concat (aggregation)
 - $concatArrays (aggregation)
 - $cond (aggregation)
 - $convert (aggregation)
 - $cos (aggregation)
 - $dateFromParts (aggregation)
 - $dateToParts (aggregation)
 - $dateFromString (aggregation)
 - $literal (aggregation)
 
 - 查询修饰符
 - 数据库命令
 - 聚合命令
 - 地理空间命令
 - 查询和写操作命令
 - 查询计划缓存命令
 - 认证命令
 - 用户管理命令
 - 角色管理命令
 - 复制命令
 - 分片命令
 - 会话命令
 - 管理命令
 - 诊断命令
 - 免费监控命令
 - 系统事件审计命令
 - mongo Shell 方法
 -  集合方法   
- db.collection.aggregate()
 - db.collection.bulkWrite()
 - db.collection.copyTo()
 - db.collection.count()
 - db.collection.countDocuments()
 - db.collection.estimatedDocumentCount()
 - db.collection.createIndex()
 - db.collection.createIndexes()
 - db.collection.dataSize()
 - db.collection.deleteOne()
 - db.collection.deleteMany()
 - db.collection.distinct()
 - db.collection.drop()
 - db.collection.dropIndex()
 - db.collection.dropIndexes()
 - db.collection.ensureIndex()
 - db.collection.explain()
 - db.collection.find()
 - db.collection.findAndModify()
 - db.collection.findOne()
 - db.collection.findOneAndDelete()
 - db.collection.findOneAndReplace()
 - db.collection.findOneAndUpdate()
 - db.collection.getIndexes()
 - db.collection.getShardDistribution()
 - db.collection.getShardVersion()
 - db.collection.insert()
 - db.collection.insertOne()
 - db.collection.insertMany()
 - db.collection.isCapped()
 - db.collection.latencyStats()
 - db.collection.mapReduce()
 - db.collection.reIndex()
 - db.collection.remove()
 - db.collection.renameCollection()
 - db.collection.replaceOne()
 - db.collection.save()
 - db.collection.stats()
 - db.collection.storageSize()
 - db.collection.totalIndexSize()
 - db.collection.totalSize()
 - db.collection.update()
 - db.collection.updateOne()
 - db.collection.updateMany()
 - db.collection.watch()
 - db.collection.validate()
 
 - 词汇表
 - 默认的MongoDB端口
 - 默认的MongoDB读/写关注
 - 服务器会话
 
 - MongoDB驱动
 - FAQ
 - 联系我们
 - 更多资料   
- [快学Mongo]
 - [Mongo问题讨论区]
 - [Mongo 驱动使用手册]
 
 - 本书使用 GitBook 发布
 
mongo Shell 快速参考
mongo Shell 快速参考
在本页面
[success] Note
下面的文档是MongoDB服务器下载.中包含的
mongoshell。有关新的MongoDB Shell ,mongosh的信息,请参考mongosh文档。要了解这两种shell的区别,请参阅Comparison of the mongo Shell and mongosh.
mongo Shell命令历史
 您可以使用上下箭头键检索在 mongo shell中发布的先前命令。 命令历史记录存储在〜/ .dbshell文件中。 有关更多信息,请参见.dbshell 。
命令行选项
 mongo shell可以使用许多选项启动。 有关所有可用选项的详细信息,请参见mongo shell 页面。
下表显示了mongo的一些常用选项:
| 选项 | 说明 | 
|---|---|
| —help | 显示命令行选项 | 
| —nodb | 在不连接数据库的情况下启动mongo shell。 要稍后连接,请参阅Opening New Connections。 | 
| —shell | 与JavaScript文件(即<file.js>])结合使用,以在运行JavaScript文件后在mongo shell中继续。 有关示例,请参见 JavaScript file。 | 
命令助手
mongoshell提供了各种帮助。下表显示了一些常见的帮助方法和命令:
| 帮助方法和命令 | 描述 | 
|---|---|
| help() | 打印当前数据库的列表 | 
db.help() |  打印当前数据库的所有角色的列表,包括用户定义的角色和内置角色。 | 
db..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操作:
| JavaScript数据库操作 | 说明 | 
|---|---|
| db.auth() | 如果以安全模式运行,请对用户进行身份验证。 | 
coll = db.<collection> |  将当前数据库中的特定集合设置为变量coll,如以下示例所示: coll = db.myCollection; 您可以使用变量在myCollection上执行操作,如以下示例所示: coll.find(); | 
| db.collection.find() | 查找集合中的所有文档并返回一个游标。 有关更多信息和示例,请参见db.collection.find()和查询文档。 有关在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中执行操作的更多信息,请参见:
键盘快捷键
 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中的一些常见读取操作:
| 读取操作 | 说明描述 | 
|---|---|
db.collection.find() |  在集合中找到符合<query>条件的文档。 如果未指定<query>条件或该条件为空(即{}),则读取操作将选择集合中的所有文档。
以下示例在用户集合中选择name字段等于“ Joe”的文档:coll = db.users;coll.find( { name: "Joe" } );有关指定<query>条件的更多信息,请参见:
Specify Equality Condition.
 |  
db.collection.find(  |  查找符合<query>条件的文档,并仅返回<projection>中的特定字段。
以下示例从集合中选择所有文档,但仅返回名称字段和_id字段。 除非明确指定不返回,否则始终返回_id。
coll = db.users;
coll.find({},{name:true});
有关指定<projection>的更多信息,请参见Project Fields to Return from Query.。 |  
db.collection.find().sort( |  以指定的<sort order>返回结果。
以下示例从集合中选择所有文档,并返回按名称字段升序+1排序的结果。 使用-1降序:
coll = db.users;
coll.find()。sort({name:1}); |  
db.collection.find( order>) |  以指定的<sort order>返回符合<query>条件的文档。 |  
db.collection.find( … ).limit( ) |  将结果限制为<n>行。 如果只需要一定数量的行以获得最佳性能,则强烈建议使用。 |  
db.collection.find( … ).skip( ) |  跳过<n>个结果。 |  
| db.collection.count() | 返回集合中的文档总数。 | 
db.collection.find().count() |  返回与查询匹配的文档总数。
count()忽略limit()和skip().例如,如果有100条记录匹配,但限制为10,则count()将返回100。这比迭代自己的速度更快,但仍然需要时间。 |  
db.collection.findOne() |  查找并返回一个文档。 如果找不到,则返回null。
以下示例在用户集合中选择一个名称与“ Joe”匹配的文档:
coll = db.users;
coll.findOne({name:“ Joe”});
在内部,findOne()方法是带有limit(1)的find()方法。 |  
有关更多信息和示例,请参阅Query Documents 。 请参阅Query and Projection Operators。
错误检查方法
mongo shell write方法将Write Concern直接集成到方法执行中,并返回一个WriteResult()对象,该对象包含操作结果,包括所有写错误和写关注错误。
行政命令助手
下表列出了一些支持数据库管理的常用方法:
| JavaScript数据库管理 | 方法说明 | 
|---|---|
db.fromColl.renameCollection( |  将集合从fromColl重命名为<toColl>。 请参阅Naming Restrictions。 |  
db.getCollectionNames() |  获取当前数据库中所有集合的列表。 | 
db.dropDatabase() |  删除当前数据库。 | 
另请参见administrative database methods以获取方法的完整列表。
打开其他连接
您可以在mongo shell中创建新的连接。
下表显示了创建连接的方法:
| JavaScript连接创建方法 | 说明 | 
|---|---|
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脚本。
译者:王恒
校对:杨帅
Copyright © 上海锦木信息技术有限公司 all right reserved,由 MongoDB汉化小组 提供技术支持文件修订时间: 2020-10-11 20:53:05
