$listLocalSessions
定义
$listLocalSessions
版本 3.6 中的新增功能。
重要
当用户在
mongod
或mongos
实例上创建会话时,会话记录最初仅存在于该实例的内存中;即该记录是实例的本地记录。 该实例会定期将其缓存的会话同步到config
数据库中的system.sessions
集合,同步后,这些会话将对$listSessions
和部署的所有成员可见。 在会话记录存在于system.sessions
集合中之前,您只能通过$listLocalSessions
操作列出会话。$listLocalSessions
操作使用db.aggregate()
方法而不是db.collection.aggregate()
。要运行
$listLocalSessions
,它必须是管道中的第一阶段。该阶段采用以下语法:
{ $listLocalSessions: <document> } $listLocalSessions
阶段采用包含以下内容之一的文档:字段说明{ }
如果使用访问控制运行,则返回当前经过身份验证的用户的所有会话。
如果在没有访问控制的情况下运行,则返回所有会话。
{ users: [ { user: <user>, db: <db> }, ... ] }
返回指定用户的所有会话。 如果使用访问控制运行,则经过身份验证的用户必须具有对集群执行listSessions
操作的权限,才能列出其他用户的会话。{ allUsers: 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: { } } ] )
如果在没有访问控制的情况下运行,该操作会列出所有本地会话。