文档菜单
文档首页
/
MongoDB Shell
/

方法

本页内容

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

以下文档列出了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() 操作构建器构建的操作列表。
指定更新或删除操作的查询条件。
设置 hint 选项,指定支持批量操作 的索引。
向批量操作列表添加一个删除操作。
向批量操作列表添加一个单个文档删除操作。
向批量操作列表添加一个单个文档替换操作。
向批量操作列表添加一个单个文档更新操作。
向批量操作列表添加一个 multi 更新操作。该方法更新现有文档中的特定字段。
upsert选项设置为true,以便在更新或替换操作中。
返回一个数组,其中包含通过Bulk.execute().执行的所有写操作。
将一个插入操作添加到批量操作列表中。
返回一个包含Bulk()对象中操作和批次数的JSON文档。
返回一个包含Bulk()对象中操作和批次数的JSON文档的字符串。
方法
描述
提供对聚合管道的访问。

提供批量写操作功能。

已弃用mongosh 1.0.6。使用db.collection.countDocuments()db.collection.estimatedDocumentCount()代替。
返回集合或视图中文档数的计数。将$group聚合阶段与$sum表达式包装。
返回集合或视图中文档数的近似计数。
在集合上建立索引。
在集合上建立一个或多个索引。
返回集合的大小。将输出中的size字段包装在collStats.的输出中。
删除集合中的一个文档。
删除集合中的多个文档。
返回具有指定字段不同值的文档数组。
从数据库中删除指定的集合。
从集合中删除指定的索引。
删除集合上的所有索引。

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

返回各种方法的查询执行信息。
对集合或视图执行查询并返回一个游标对象。
原子地修改并返回单个文档。
执行查询并返回单个文档。
查找单个文档并将其删除。
查找单个文档并将其替换。
查找单个文档并更新它。

返回描述集合上现有索引的文档数组。

打印分片集合的数据分布统计信息。
返回有关分片集群中数据状态的详细信息。
在集合中插入一个新的文档。
在集合中插入多个新文档。
报告集合是否是 固定集合。
在集合上运行 map-reduce 聚合操作。
重建集合上所有现有索引。
更改集合的名称。
替换集合中的单个文档。
报告集合的状态。提供了对 collStats. 的包装。
报告集合使用的总大小(以字节为单位)。提供了对 storageSize 字段的包装。
报告集合上索引使用的总大小。提供了对 totalIndexSize 字段的包装。
报告集合的总大小,包括所有文档和索引的大小。
修改集合中的单个文档。
修改集合中的多个文档。
验证集合。
在集合上打开一个 change stream 游标。
方法
描述

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

Mongo() 方法具有以下参数

参数
类型
描述
host
字符串

可选

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

如果省略,Mongo() 将实例化到 localhost 接口的默认端口 27017 的连接。

autoEncryptionOpts
文档

可选

版本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 命令行中不合法名称的集合。
返回当前数据库中所有集合和视图的集合信息。
列出当前数据库中的所有集合和视图。
返回当前数据库连接。
返回当前日志详细程度设置。
返回当前数据库的名称。
返回当前的 profile levelslowOpThresholdMs 设置和 slowOpSampleRate 设置。
提供对指定数据库的访问。
提供所有数据库命令的列表。
结束一个认证会话。
打印有关分片配置和现有分片集群中分片信息的格式化报告。
运行一个 数据库命令。
日志消息 设置单个详细程度级别。
配置数据库的 profiler levelslowmssampleRate
为一个数据库打开一个 change stream cursor,以报告其所有非系统集合。

注意

限制

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

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

  • 字段级加密仅在 mongosh 二进制文件中可用,在 内嵌 Compass 命令行界面 中不可用。

方法
描述
创建带有加密字段的集合。
如果当前数据库连接配置了访问用于加密 encryptedValue 的密钥管理服务 (KMS) 和密钥库,则解密指定的 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()方法加载的脚本支持Node.js的__filename__dirname变量。这些变量分别返回加载脚本的文件名和目录。返回的值始终是绝对路径。

传统的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() 方法相同。此方法的输出类似于db.printSlaveReplicationInfo() 方法。在 mongosh 中已弃用 db.printSlaveReplicationInfo() 方法。请使用 db.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() 方法相同。此方法的输出类似于在传统 mongo 命令行界面中使用的 rs.printSlaveReplicationInfo() 方法。在 mongosh 中已弃用 rs.printSlaveReplicationInfo() 方法。请使用 rs.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(). 的别名。
将分片与区域关联。支持在分片集群中配置区域。
sh.updateZoneKeyRange(). 的别名。

返回有关分片集合的块是否平衡的信息。

版本4.4.

禁用命名空间的自动块合并。

版本7.0.

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

启用命名空间的自动块合并。

版本7.0.

启用分片集群的自动拆分。
激活先前使用 sh.disableBalancing(). 禁用的分片集合平衡过程。
在特定数据库上启用分片。
返回一个布尔值,报告均衡器是否已启用。
返回分片集合的数据分布信息。sh.getShardedDataDistribution()$shardedDataDistribution 聚合管道阶段的壳辅助方法。
返回一个布尔值,报告均衡器进程是否正在迁移数据块。
在分片集群中迁移一个 数据块
删除分片键值范围与区域之间的关联。
删除分片与区域之间的关联。
删除标签与分片之间的关联。
删除使用 sh.addShardTag() 方法创建的分片标签的范围。此方法在 MongoDB 3.4 中别名为 sh.removeRangeFromZone()
启用或禁用均衡器,该均衡器在分片之间迁移 数据块
为集合启用分片。
使用分片键的特定值作为分割点,将现有的 数据块分割成两个。
将包含与查询匹配的文档的现有 数据块分割成两个大致相等的。

启用自动合并器。

版本7.0.

启用均衡器。
报告分片集群的状态。

禁用自动合并器。

版本7.0.

禁用均衡器。此操作不会等待均衡器完成任何正在进行的操作,并可能终止正在进行的操作。
将分片键的范围与区域关联起来。支持在分片集群中配置区域。

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

有关 mongosh 通过遥测跟踪的数据的更多信息,请参阅配置遥测选项。

方法
描述
禁用 mongosh 的遥测。
启用 mongosh 的遥测。
方法
描述
终止一个多文档事务,并回滚事务中操作所做的任何数据更改。
保存多文档事务中操作所做的更改,并结束事务。
启动与session关联的多文档事务

重要

passwordPrompt() 方法目前在 mongosh 中不支持。因此,在使用以下方法时,您必须指定密码作为参数

方法
描述
对数据库进行用户验证。
更改现有用户的密码。
创建新用户。
删除与数据库关联的所有用户。
删除单个用户。
返回有关指定用户的信息。
返回有关与数据库关联的所有用户的信息。
更新指定用户的数据。
授予角色及其权限给用户。
从用户中移除角色。

返回

数据类型