$listLocalSessions
定义
$listLocalSessions
重要
当用户在
mongod
或mongos
实例上创建会话时,会话记录最初仅存在于实例的内存中;即记录是本地的。周期性地,实例会将其缓存的会话同步到config
数据库中的system.sessions
集合,此时它们对$listSessions
和部署的所有成员可见。直到会话记录存在于system.sessions
集合中,您只能通过$listLocalSessions
操作来列出会话。$listLocalSessions
操作使用db.aggregate()
方法,而不是db.collection.aggregate()
。要运行
$listLocalSessions
,它必须是管道中的第一个阶段。该阶段具有以下语法
{ $listLocalSessions: <document> } $listLocalSessions
阶段接受一个包含以下内容的文档字段描述{ }
如果运行时使用访问控制,则返回当前认证用户的全部会话。
如果没有运行时使用访问控制,则返回全部会话。
{ 用户: [ { 用户: <user>, 数据库: <db> }, ... ] }
返回指定用户的全部会话。如果启用了访问控制,认证用户必须拥有在集群上执行listSessions
动作的权限,才能列出其他用户的会话。{ 所有用户: true }
返回所有用户的全部会话。如果启用了访问控制,认证用户必须拥有在集群上执行listSessions
动作的权限。
限制
$listLocalSessions
在 事务 中不允许使用。
示例
列出所有本地会话
从连接的 mongod
/ mongos
实例的内存会话缓存中,以下聚合操作列出所有会话
注意
如果启用访问控制,当前用户必须在集群上具有 listSessions
操作的权限。
db.aggregate( [ { $listLocalSessions: { allUsers: true } } ] )
列出指定用户的全部本地会话
从连接的 mongod
/ mongos
实例的内存缓存中,以下聚合操作列出指定用户 myAppReader@test
的所有会话
注意
如果运行时启用访问控制并且当前用户不是指定用户,则当前用户必须在集群上具有 listSessions
操作的权限。
db.aggregate( [ { $listLocalSessions: { users: [ { user: "myAppReader", db: "test" } ] } } ] )
列出当前用户的全部本地会话
从连接的 mongod
/ mongos
实例的内存缓存中,以下聚合操作列出当前用户的所有会话(如果运行时启用了访问控制)
db.aggregate( [ { $listLocalSessions: { } } ] )
如果没有启用访问控制,操作将列出所有本地会话。