On this page
$listLocalSessions
在本页面
Definition
$listLocalSessions
- 3.6 版的新功能。
Important
当用户在mongod或mongos实例上创建会话时,该会话的记录最初仅存在于该实例的内存中。即记录是实例的本地记录。实例将定期将其缓存的会话同步到config
数据库中的system.sessions集合,这时$listSessions和部署的所有成员都可以看到它们。在system.sessions
集合中存在会话记录之前,您只能通过$listLocalSessions操作列出会话。
$listLocalSessions操作使用db.aggregate()方法,而不是db.collection.aggregate()使用。
要运行$listLocalSessions,它必须是管道中的第一阶段。
该阶段具有以下语法:
{ $listLocalSessions: <document> }
$listLocalSessions阶段获取具有以下内容之一的文档:
{ } |
如果使用访问控制运行,则返回当前已认证用户的所有会话。 |
如果运行时没有访问控制,则返回所有会话。
| { users: [ { user: <user>, db: <db> }, ... ] }
|返回指定用户的所有会话。如果使用访问控制运行,则已认证的用户必须在群集上具有listSession
操作的特权才能列出其他用户的会话。
| { allUsers: true }
|返回所有用户的所有会话。如果使用访问控制运行,则已认证的用户必须在群集上具有listSession
操作的特权。
Examples
列出所有本地会话
从连接的mongod/mongos实例的会话内存中缓存中,以下聚合操作列出了所有会话:
Note
如果使用访问控制运行,则当前用户必须对集群具有listSession
操作的特权。
db.aggregate( [ { $listLocalSessions: { allUsers: true } } ] )
列出指定用户的所有本地会话
从连接的mongod/mongos实例的内存缓存中,以下聚合操作列出了指定用户myAppReader@test
的所有会话:
Note
如果使用访问控制运行,并且当前用户不是指定的用户,则当前用户必须对集群具有listSession
操作的特权。
db.aggregate( [ { $listLocalSessions: { users: [ { user: "myAppReader", db: "test" } ] } } ] )
列出当前用户的所有本地会话
从连接的mongod/mongos实例的内存中缓存中,以下聚合操作列出了当前用户 如果 通过访问控制运行的所有会话:
db.aggregate( [ { $listLocalSessions: { } } ] )
如果在没有访问控制的情况下运行,该操作将列出所有本地会话。