列出存储在config
数据库system.sessions
集合中的所有会话。MongoDB部署的所有成员都能看到这些会话。
当用户在mongod或mongos实例上创建会话时,会话最初存储在实例的内存中,也就是实例的本地记录。实例会定期将本地缓存的会话同步到config
数据库中的system.sessions
集合,会话对$listSessions
和部署的所有成员可见,在会话记录存在于system.sessions
集合之前,只能通过$listLocalSessions
操作列出会话。
语法
js
{ $listSessions: <document> }
使用
$listSessions
可以接受一个文档,文档的字段如下:
字段 | 说明 |
---|---|
{ } |
返回当前已验证用户的所有会话。没有访问控制,则返回所有会话。 |
{ users: [ { user: <user>, db: <db> }, ... ] } |
返回指定用户的所有会话。如果运行时有访问控制,则通过身份验证的用户必须拥有在群集上执行 listSessions 操作的权限,才能列出其他用户的会话。 |
{ allUsers: true } |
返回所有用户的所有会话。如果运行时有访问控制,则通过身份验证的用户必须拥有在群集上执行 listSessions 操作的权限。 |
- 事务中不允许使用
$listSessions
。 $listSessions
必须是管道中的第一个阶段。
举例
**注意:**如果使用访问控制运行,当前用户必须拥有在群集上执行$listSessions
操作的权限。
列出全部会话
以下聚合操作会从system.sessions
集合中列出所有会话:
js
use config
db.system.sessions.aggregate( [ { $listSessions: { allUsers: true } } ] )
列出指定用户的全部会话
以下聚合操作将从system.sessions
集合中列出指定用户myAppReader@test
的所有会话:
js
use config
db.system.sessions.aggregate( [ { $listSessions: { users: [ {user: "myAppReader", db: "test" } ] } } ] )
列出当前用户的全部会话
js
use config
db.system.sessions.aggregate( [ { $listSessions: { } } ] )