admin 管理员组

文章数量: 888338

mongodb

system.sessions

该system.sessions集合存储可供部署的所有成员使用的session记录。

当用户在mongod或 mongos实例上创建session时,该session记录最初仅存在于该实例的内存中。实例会定期将其缓存的session同步到system.sessions集合,当同步完成后,这些session对部署的所有成员都是可见的。

要查看system.sessions集合中的记录,需使用 $listSessions。

如果是在分片群集中,那么system.sessions集合将会被分片。

  • 当添加一个shard到分片群集时,如果要添加的shard已经包含其自己的system.sessions集合,那么MongoDB会在添加shard的过程中删除该shard自身的system.sessions集合。
  • 从版本4.4(4.2.7)开始,MongoDB自动将system.sessions集合拆分为至少1024个块,并将这些块均匀地分布在集群中的各个分片上。

$listSessions使用

3.6版中的新功能。

当用户在mongod或 mongos实例上创建session时,该session记录最初仅存在于该实例的内存中。实例会定期将其缓存的session同步到system.sessions集合,当同步完成后,这些session对部署的所有成员都是可见的。

要使用$listSessions时,它必须在pipeline中的第一阶段。

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

使用示例:

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

警告

不要手动修改或删除system.sessions集合。

本文标签: mongodb