Docs 菜单
Docs 主页
/
MongoDB Shell
/

方法

在此页面上

  • 管理方法
  • Atlas Search 索引方法
  • 批量操作方法
  • 集合方法
  • 连接方法
  • 游标方法
  • 数据库方法
  • 正在使用的加密方法
  • 原生方法
  • 查询计划缓存方法
  • 复制方法
  • 角色管理方法
  • 会话对象方法
  • 服务器状态方法
  • 原生分片集群方法
  • 遥测方法
  • 事务方法
  • 用户管理方法

以下文档列出了 MongoDB Shell 中的可用方法。点击某个方法,即可查看 MongoDB 手册中的相关文档,包括语法和示例。

重要

重置 Shell 与服务器连接的方法,会触发所有打开的服务器会话的终止。会话结束时,所有正在进行的操作也将终止,如果启用了身份验证,则客户端必须重新进行身份验证。

以下方法可以重置 shell 的连接:

  • db.auth

  • Mongo.setReadPref

  • Mongo.setReadConcern

方法
说明

admin 数据库运行命令。

报告当前正在进行的操作。

终止指定的操作。

正常安全地关闭当前 mongodmongos 进程。

刷新写入磁盘并锁定数据库,以防止写入操作并协助备份操作。

支持在使用 db.fsyncLock() 锁定的数据库上继续写入。

Atlas Search 索引支持在 Atlas Search 中查询数据。Atlas Search 索引通过将搜索词映射到包含这些词的文档来实现高性能文本搜索查询。

使用以下方法管理 Atlas Search 索引。

重要

以下方法只能在 MongoDB Atlas 托管的部署上运行。

名称
说明

在指定的集合上创建一个或多个 Atlas Search 索引。

删除现有 Atlas Search 索引。

返回指定集合上现有 Atlas Search 索引的信息。

更新现有 Atlas Search 索引。

方法
说明

初始化并返回集合的新 Bulk() 操作构建器。该构建器可以构造 MongoDB 批量执行的写入操作的有序列表。

为集合初始化并返回新的 Bulk() 操作构建器。该构建器可以构建写入操作的无序列表,由 MongoDB 批量执行。

创建批量操作构建者,用于构造要为单个集合批量执行的写入操作列表。要实例化构建器,请使用 db.collection.initializeOrderedBulkOp()db.collection.initializeUnorderedBulkOp() 方法。

执行由 Bulk() 操作构建器构建的操作列表。

指定更新或删除操作的查询条件。

设置指定索引以支持批量操作的提示选项。

将删除操作添加到批量操作列表中。

将单个文档删除操作添加到批量操作列表中。

将单个文档替换操作添加到批量操作列表中。

将单个文档更新操作添加到批量操作列表中。

多重更新操作添加到批量操作列表。该方法将更新现有文档中的特定字段。

将更新或替换操作的 upsert 选项设置为 true

返回通过 Bulk.execute() 执行的一组写入操作。

将插入操作添加到批量操作列表中。

返回 JSON 文档,其中包含 Bulk() 对象中的操作数和批次数。

以字符串形式返回包含 Bulk() 对象中操作和批处理次数的 JSON 文档。

方法
说明

提供对聚合管道的访问。

提供批量写入操作功能。

mongosh 1.0.6中已弃用。 请改用db.collection.countDocuments()db.collection.estimatedDocumentCount()

返回集合或视图中的文档计数。使用 $sum 表达式包装 $group 聚合阶段。

返回集合或视图中文档的近似数量。

在集合上构建索引。

为集合构建一个或多个索引。

返回集合的大小。将 size 字段封装在 collStats 的输出中。

删除集合中的单个文档。

删除集合中的多个文档。

返回具有指定字段的不同值的文档数组。

从数据库中删除指定的集合。

删除集合的指定索引。

删除集合上的所有索引。

已弃用。使用 db.collection.createIndex()

返回各种方法的查询执行信息。

对集合或视图执行查询,并返回游标对象。

以原子方式修改并返回单个文档。

执行查询并返回单个文档。

查找并更新单个文档。

查找并更新单个文档。

查找并更新单个文档。

返回说明集合上现有索引的一组文档。

打印分片集合的数据分布统计信息。

返回有关分分片集群中数据状态的信息。

在集合中插入新文档。

在集合中插入多份新文档。

报告集合是否为固定大小集合

对集合运行 map-reduce 聚合操作。

重新构建集合上的所有现有索引。

更改集合的名称。

替换集合中的单个文档。

关于集合状态的报告。提供 collStats 的包装器。

报告集合使用的总大小(以字节为单位)。提供 storageSize 输出的 collStats 字段的封装器。

报告集合上索引使用的总大小。提供 totalIndexSize 输出的 collStats 字段的封装器。

报告集合的总大小,其中包括集合中所有文档和所有索引的大小。

修改集合中的单个文档。

修改集合中的多个文档。

验证集合。

打开集合的变更流游标

方法
说明

JavaScript 构造函数,用于从 mongo shell 或 JavaScript 文件实例化数据库连接。

Mongo() 方法具有以下参数:

Parameter
类型
说明

host

字符串

Optional

目标数据库连接的连接字符串。

如果省略,Mongo() 会在以下默认端口 27017 上实例化与本地主机接口的连接:

autoEncryptionOpts

文档

Optional

4.2 版本中的新增功能

启用客户端字段级加密的配置参数。

autoEncryptionOpts 覆盖数据库连接的现有客户端字段级加密配置。 如果省略, Mongo()会继承当前数据库连接的客户端字段级加密配置。

有关用法和语法的文档,请参阅 AutoEncryptionOpts

返回数据库对象。

设置 MongoDB 连接的读取偏好

为副本集或分片集群打开变更流游标,以报告其数据库中的所有非系统集合,adminlocalconfig 数据库除外。

方法
说明

添加可修改查询行为的特殊传输协议标记。

如果一个或多个查询的分片不可用,则允许对分片集合进行 db.collection.find() 操作,以返回部分结果,而不是错误。

控制 MongoDB 将在单个网络消息中返回到客户端的文档数量。

以下示例查询以 100 个为一批返回结果:

db.myCollection.find().batchSize(100)

关闭游标并释放关联的服务器资源。

指定 db.collection.find() 返回的游标的排序规则。

将注释附加到查询,以允许在日志和 system.profile 集合中进行跟踪。

修改游标,以返回结果集中的文档数量,而不是文档本身。

报告游标的查询执行计划。

对游标中的每个文档应用 JavaScript 函数。

如果游标包含文档且可迭代,则返回 true

强制 MongoDB 对查询使用特定索引。

如果游标关闭,则返回 true

如果游标已关闭批处理中没有剩余对象,则返回 true

通过获取和迭代结果集,计算游标客户端中的文档总数。

限制游标结果集的大小。

将函数应用于游标中的每个文档,并收集数组中的返回值。

指定游标的排除式索引上限。用于结合使用 cursor.hint()

指定在游标上处理操作的累计时间限制(以毫秒为单位)。

指定游标的包含式索引下限。用于结合使用 cursor.hint()

返回游标中的下一个文档。

指示服务器避免在一段时间不活动后自动关闭游标。

返回当前游标批处理中剩余文档的数量。

db.collection.find() 操作指定读关注

为游标指定读取偏好,以控制客户端如何将查询定向到副本集

修改游标以返回索引键而不是文档。

向游标返回的每个文档添加内部存储引擎 ID 字段。

在应用 skip()limit() 方法后,返回游标中文档的数量。

返回一个游标,该游标仅在传递或跳过多个文档后才开始返回结果。

根据排序规范返回排序的结果。

将游标标记为循环式。仅对超过固定大小集合的游标有效。

返回一个数组,其中包含游标返回的所有文档。

方法
说明

运行不需要底层集合的管理/诊断管道。

创建新的集合或视图。

将指定的聚合管道应用于源集合或视图后,创建一个视图。

显示指定数据库命令的帮助文本。

删除当前数据库。

返回集合或视图对象。用于访问 mongo Shell 中名称无效的集合。

返回当前数据库中所有集合和视图的集合信息。

列出当前数据库中的所有集合和视图。

返回当前数据库连接。

返回当前日志冗余度设置。

返回当前数据库的名称。

返回当前的分析级别slowOpThresholdMs 设置和 slowOpSampleRate 设置。

提供对指定数据库的访问权限。

提供所有数据库命令的列表。

结束已经过身份验证的会话。

打印分片配置的格式化报告以及有关分片集群中现有数据段的信息。

日志消息设置单一的详细程度。

打开变更流游标获取数据库,以针对所有非系统集合提供报告。

注意

限制

  • 仅当 mongosh 连接到 Atlas 集群或 MongoDB Enterprise Server 时,自动加密才可用。有关详细信息,请参阅客户端字段级自动加密。本部分列出的方法用于手动加密,并且在非企业服务器上受支持。

  • 通过 Homebrew 安装的 mongosh 无法使用自动加密。

  • 字段级加密仅在 mongosh 二进制文件中可用,在嵌入式 Compass shell 中不可用。

方法
说明

创建包含加密字段的集合。

如果将当前数据库连接配置为具有对密钥管理服务 (KMS) 和用于加密 encryptedValue 的密钥保管库的访问权限,则解密指定的 encryptedValue

使用下列指定的 encryptionKeyIdencryptionAlgorithm 返回指定值。

返回当前数据库集合的 ClientEncryption 对象。

返回当前数据库连接的 KeyVault 对象。

keyAltName 添加到具有指定 UUID 的数据加密密钥的 keyAltNames 数组。

将数据加密密钥添加到与数据库连接关联的密钥保管库中。

从与数据库连接关联的密钥保管库中删除具有指定 UUID 的数据加密密钥。

获取具有指定 UUID 的数据加密密钥。数据加密密钥必须存在于与数据库连接关联的密钥保管库中。

获取具有指定 keyAltName 的所有数据加密密钥。

返回在与数据库连接关联的密钥保管库中存储的所有数据加密密钥。

从具有指定 UUID 的数据加密密钥中删除指定的 keyAltName。数据加密密钥必须存在于与数据库连接关联的密钥保管库中。

方法
说明

buildInfo()

返回以下 JSON 格式的文档,描述 mongosh 版本和驱动程序依赖项:

{
version: '1.10.1',
distributionKind: 'packaged',
buildArch: 'x64',
buildPlatform: 'linux',
buildTarget: 'unknown',
buildTime: '2023-06-21T09:49:37.225Z',
gitVersion: '05ad91b4dd40382a13f27abe1ae8c3f9f52a38f7',
nodeVersion: 'v16.20.1',
opensslVersion: '3.1.1',
sharedOpenssl: true,
runtimeArch: 'x64',
runtimePlatform: 'darwin',
deps: {
nodeDriverVersion: '5.6.0',
libmongocryptVersion: undefined,
libmongocryptNodeBindingsVersion: undefined
}
}

cd()

将当前工作目录更改为指定路径。

isInteractive()

返回一个布尔值,指示 mongosh 是否以交互或脚本模式运行。

load()

在 shell 中加载并运行 JavaScript 文件。

mongosh 中,使用 load() 方法加载的脚本支持 __filename__dirname Node.js 变量。这些变量分别返回加载的脚本的文件名和目录。返回的值始终是绝对路径。

旧版 mongo shell无法访问权限load() 方法中脚本的文件名或目录。

print()

打印指定的文本或变量。print()printjson()console.log() 的别名。

> print("hello world")
hello world
> x = "example text"
> print(x)
example text

pwd()

返回活动 Shell 会话的当前工作目录。

quit()

退出当前 Shell 会话。

sleep()

在给定时间段内暂停 mongo shell。

version()

返回当前版本的 mongosh 实例。

方法
说明

返回一个接口,用于访问查询计划缓存对象和集合的相关 PlanCache 方法。

删除集合的所有缓存查询计划。

清除指定查询结构的缓存查询计划。

列出可用于查看和修改集合查询计划缓存的方法。

返回集合的计划缓存条目数组。

方法
说明

将成员添加到副本集。要运行此方法,必须连接到副本集的主成员。

将仲裁节点添加到现有副本集。

返回包含当前副本集配置的文档。

使连接 mongosh 的副本集成员在指定的持续时间内没有资格成为主成员。必须指定持续时间(以秒为单位)。

从 oplog 数据返回副本集的状态。

初始化新的副本集。

返回 mongosh 连接到的副本集节点的 oplog。

返回 mongosh 连接到的副本集节点的 oplog。

db.printSecondaryReplicationInfo

返回副本集的从节点的状态。

这与 rs.printSecondaryReplicationInfo() 方法相同。

以下示例是 rs.printSecondaryReplicationInfo() 方法在具有两个从成员的副本集上发出的输出:

source: rs2.example.net:27017
{
syncedTo: 'Tue Oct 13 2020 09:37:28 GMT-0700 (Pacific Daylight Time)',
replLag: '0 secs (0 hrs) behind the primary '
}
---
source: rs3.example.net:27017
{
syncedTo: 'Tue Oct 13 2020 09:37:28 GMT-0700 (Pacific Daylight Time)',
replLag: '0 secs (0 hrs) behind the primary '
}

rs.printSecondaryReplicationInfo

返回副本集的从节点的状态。

这与 db.printSecondaryReplicationInfo() 方法相同。

以下示例是 rs.printSecondaryReplicationInfo() 方法在具有两个从成员的副本集上发出的输出:

source: rs2.example.net:27017
{
syncedTo: 'Tue Oct 13 2020 09:42:18 GMT-0700 (Pacific Daylight Time)',
replLag: '0 secs (0 hrs) behind the primary '
}
---
source: rs3.example.net:27017
{
syncedTo: 'Tue Oct 13 2020 09:42:18 GMT-0700 (Pacific Daylight Time)',
replLag: '0 secs (0 hrs) behind the primary '
}

修改现有副本集的配置。

从副本集中删除由主机名指定的节点。

返回 mongosh 连接到的副本集节点的状态。

将副本集的主成员设置为从成员。要运行此方法,必须连接到主成员。

将同步目标重置为由连接 mongosh 的副本集成员的主机名指定的副本集成员。

方法
说明

创建角色并指定其特权。

删除用户定义的角色。

删除与数据库关联的所有用户定义的角色。

返回指定角色的信息。

返回数据库中所有用户定义角色的信息。

为用户定义的角色分配特权。

从用户定义的角色中删除指定特权。

指定用户定义角色继承相关特权的角色。

从角色中删除继承的角色。

更新用户定义的角色。

方法
说明

为连接启动会话。

更新操作时间。

结束会话。

返回会话读到的最新集群时间。

从 shell 中的会话访问指定数据库。

返回会话最后一次确认操作的时间戳。

返回会话的选项。

返回一个布尔值,指明会话是否已结束。

shell 会话的选项。要访问 SessionOptions() 对象,请使用 Session.getOptions()

方法
说明

返回描述 mongod 实例角色的文档。

如果 mongod 是副本集的成员,则 isWritablePrimarysecondary 字段将报告该实例是副本集的节点还是节点。

返回一个文档,其中包含有关运行 MongoDB 实例的系统的信息。

返回指定集合的延迟统计信息。

返回每个集合的统计数据。

返回显示 mongod 实例的编译参数的文档。

返回一个文档,其中包含有关用于启动 MongoDB 实例的运行时选项的信息。

返回提供数据库进程概况的文档。

返回报告当前数据库状态的文档。

返回 mongod 实例的版本。

方法
说明

向分片集群添加分片。

别名为 sh.addShardToZone()

将分片与区域关联。支持在分片集群中配置区域。

返回有关分片集合的数据段是否均衡的信息。

4.4 版本新增

禁用命名空间的自动数据段合并。

7.0 版本中的新增功能

禁用分片集群自动分割。

禁用分片数据库中单个集合的平衡。不影响分片集群中其他集合的平衡。

为命名空间启用自动数据段合并。

7.0 版本中的新增功能

启用分片集群自动分割。

如果之前已使用 sh.disableBalancing() 禁用分片集合负载均衡器进程,则激活此进程。

在特定数据库上启用分片。

返回一个布尔值,用于报告负载均衡器当前是否已启用。

返回分片集合的数据分布信息。sh.getShardedDataDistribution()$shardedDataDistribution 聚合管道阶段的 Shell 助手方法。

返回一个布尔值,用于报告负载均衡器进程当前是否正在迁移数据块。

分片集群中迁移数据块

删除一系列分片键值与区域之间的关联。

删除分片与区域之间的关联。

删除标签和分片之间的关联。

移除使用 sh.addShardTag() 方法创建的分片标签的一系列分片键值。在 MongoDB 3.4 中,此方法的别名为 sh.removeRangeFromZone()

启用或禁用在分片之间迁移数据块负载均衡器

为集合启用分片。

使用分块键的特定值作为分界点,将现有数据块分成两个数据块。

将包含与某一查询匹配的文档的现有数据块分成两个大致相等的数据块。

启用 AutoMerger。

7.0 版本中的新增功能

报告分片集群的状态。

禁用 AutoMerger。

7.0 版本中的新增功能

禁用负载均衡器。此操作不会等待负载均衡器完成任何正在进行的操作,并且可能会终止正在进行的操作。

将一系列分片键与区域关联。支持在分片集群中配置区域。

这些方法可配置 mongosh 是否跟踪匿名遥测数据。默认情况下启用遥测。

有关 mongosh 可通过遥测追踪的数据类型详细信息,请参阅配置遥测选项

方法
说明

mongosh 禁用遥测。

mongosh 启用遥测。

方法
说明

终止多文档事务并回滚事务内操作所做的任何数据更改。

将操作所做的更改保存在多文档事务中并结束该事务。

启动与会话相关的多文档事务

重要

mongosh 当前不支持 passwordPrompt() 方法。因此,使用以下方法时,必须将密码指定为参数:

方法
说明

验证数据库的用户身份。

更改现有用户的密码。

创建新用户。

删除与数据库关联的所有用户。

删除单个用户。

返回指定用户的信息。

返回与数据库关联的所有用户的信息。

更新指定用户的数据。

向用户分配角色及其特权。

从用户中删除角色。

后退

数据类型