Docs 菜单

Docs 主页开发应用程序MongoDB Manual

$listSessions

在此页面上

  • 定义
  • 限制
  • 举例
$listSessions

列出存储在 config 数据库的 system.sessions 集合中的所有会话。MongoDB 部署的所有节点都可以看到这些会话。

重要

当用户在mongodmongos实例上创建会话时,会话记录最初仅存在于该实例的内存中;即该记录是实例的本地记录。该实例会定期将其缓存的会话同步到config数据库中的system.sessions集合,同步后, $listSessions和部署的所有成员都可以看到这些会话。在会话记录存在于system.sessions集合中之前,您只能通过$listLocalSessions操作列出会话。

要运行$listSessions ,它必须是管道中的第一阶段。

该阶段采用以下语法:

{ $listSessions: <document> }

$listSessions阶段接受包含以下内容之一的文档:

字段
说明
{ }

如果使用访问控制运行,则返回当前经过身份验证的用户的所有会话。

如果在没有访问控制的情况下运行,则返回所有会话。

{ users: [ { user: <user>, db: <db> }, ... ] }
返回指定用户的所有会话。 如果使用访问控制运行,则经过身份验证的用户必须具有对集群执行listSessions操作的权限,才能列出其他用户的会话。
{ allUsers: true }
返回所有用户的所有会话。 如果使用访问控制运行,则经过身份验证的用户必须具有对集群执行listSessions操作的权限。

$listSessions 不允许在事务中使用。

system.sessions 集合中,以下聚合操作列出了所有会话:

注意

如果使用访问控制运行,则当前用户必须具有对集群执行listSessions操作的权限。

use config
db.system.sessions.aggregate( [ { $listSessions: { allUsers: true } } ] )

system.sessions 集合中,以下聚合操作列出了指定用户 myAppReader@test 的所有会话:

注意

如果使用访问控制运行且当前用户不是指定用户,则当前用户必须具有对集群执行listSessions操作的权限。

use config
db.system.sessions.aggregate( [ { $listSessions: { users: [ {user: "myAppReader", db: "test" } ] } } ] )

system.sessions 集合中,如果使用访问控制运行,以下聚合操作会列出当前用户的所有会话:

use config
db.system.sessions.aggregate( [ { $listSessions: { } } ] )

如果在没有访问控制的情况下运行,该操作会列出所有会话。

← $listSearchIndexes(聚合)

在此页面上