$listSessions

On this page本页内容

Definition定义

$listSessions

New in version 3.6.版本3.6中的新功能。

Lists all sessions stored in the system.sessions collection in the config database. 列出存储在配置数据库的system.sessions集合中的所有会话。These sessions are visible to all members of the MongoDB deployment.MongoDB部署的所有成员都可以看到这些会话。

Important重要的

When a user creates a session on a mongod or mongos instance, the record of the session initially exists only in-memory on the instance; i.e. the record is local to the instance. 当用户在mongodmongos实例上创建会话时,会话记录最初仅存在于实例的内存中;该记录是实例的本地记录。Periodically, the instance will sync its cached sessions to the system.sessions collection in the config database, at which time, they are visible to $listSessions and all members of the deployment. 实例将定期将其缓存的会话同步到配置数据库中的system.sessions collection in the config集合,此时,$listSessions和部署的所有成员都可以看到它们。Until the session record exists in the system.sessions collection, you can only list the session via the $listLocalSessions operation.system.sessions集合中存在会话记录之前,只能通过$listLocalSessions操作列出会话。

To run $listSessions, it must be the first stage in the pipeline.要运行$listSessions,它必须是管道中的第一个阶段。

The stage has the following syntax:此阶段语法如下所示:

{ $listSessions: <document> }

The $listSessions stage takes a document with one of the following contents:$listSessions阶段接收包含以下内容之一的文档:

{ }

If running with access control, returns all sessions for the current authenticated user.如果使用访问控制运行,则返回当前已验证用户的所有会话。

If running without access control, returns all sessions.如果在没有访问控制的情况下运行,则返回所有会话。

{ users: [ { user: <user>, db: <db> }, ... ] } Returns all sessions for the specified users. 返回指定用户的所有会话。If running with access control, the authenticated user must have privileges with listSession action on the cluster to list sessions for other users.如果使用访问控制运行,经过身份验证的用户必须具有在群集上执行listSession操作的权限,才能列出其他用户的会话。
{ allUsers: true } Returns all sessions for all users. 返回所有用户的所有会话。If running with access control, the authenticated user must have privileges with listSession action on the cluster.如果使用访问控制运行,则经过身份验证的用户必须具有在群集上执行listSession操作的权限。

Restrictions限制

$listSessions is not allowed in transactions.事务中不允许使用$listSessions

Examples示例

List All Sessions列出所有会话

From the system.sessions collection, the following aggregation operation lists all sessions:system.sessions集合中,以下聚合操作将列出所有会话:

Note

If running with access control, the current user must have privileges with listSession action on the cluster.如果使用访问控制运行,则当前用户必须具有在群集上执行listSession操作的权限。

use config

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

List All Sessions for the Specified Users列出指定用户的所有会话

From the system.sessions collection, the following aggregation operation lists all sessions for the specified user myAppReader@test:system.sessions集合中,以下聚合操作列出指定用户的所有会话myAppReader@test

Note

If running with access control and the current user is not the specified user, the current user must have privileges with listSession action on the cluster.如果使用访问控制运行,而当前用户不是指定的用户,则当前用户必须具有在群集上执行listSession操作的权限。

use config

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

List All Sessions for the Current User列出当前用户的所有会话

From the system.sessions collection, the following aggregation operation lists all sessions for the current user if run with access control:system.sessions集合中,如果使用访问控制运行,以下聚合操作将列出当前用户的所有会话:

use config

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

If run without access control, the operation lists all sessions.如果在没有访问控制的情况下运行,该操作将列出所有会话。