MongoDB聚合:$listLocalSessions

聚合管道阶段:$listLocalSessions 可以列出 mongod 或 mongos 实例缓存在内存中的会话。

语法

js 复制代码
{ $listLocalSessions: <document> }

$listLocalSessionsstage阶段可以接受一个文档,其内容如下:

字段 含义
{ } 如果运行时有访问控制,则返回当前已验证用户的所有会话,否则返回所有会话。
{ users: [ { user: <user>, db: <db> }, ... ] } 返回指定用户的所有会话。如果运行时有访问控制,则用户必须通过身份验证并拥有在群集上执行listSessions操作的权限才能列出其他用户的会话。
{ allUsers: true } 返回所有用户的所有会话。如果运行时有访问控制,则用户需要通过身份验证并拥有在群集上执行listSessions操作的权限。

使用

  • 当用户在mongod或mongos实例上创建会话时,会话的记录最初只存在于实例的内存中;即该记录是实例的本地记录。实例将定期将其缓存的会话同步到config数据库中的system.sessions集合,此时$listSessions和部署的所有成员都可以看到这些会话。在system.sessions集合中存在会话记录之前,只能通过$listLocalSessions操作列出会话。
  • $listLocalSessions操作使用db.agregate()方法,而不是db.collection.aggregate()
  • 只能在管道的第一个阶段使用$listLocalSessions
  • 事务中不允许使用$listLocalSessions

举例

列出所有本地会话

从已连接的 mongod / mongos 实例的会话内存缓存中,列出所有会话(注意权限):

js 复制代码
db.aggregate( [  { $listLocalSessions: { allUsers: true } } ] )

列出指定用户所有本地会话

从已连接的 mongod / mongos 实例的内存缓存中,列出用户 myAppReader@test 的所有会话(注意权限):

js 复制代码
db.aggregate( [ { $listLocalSessions: { users: [ { user: "myAppReader", db: "test" } ] } } ] )

列出当前用户所有本地会话

从已连接的 mongod / mongos 实例的内存缓存中列出当前用户的所有会话(需要有访问权限):

js 复制代码
db.aggregate( [ { $listLocalSessions: { } } ] )

如果不带访问控制运行,该操作会列出所有本地会话。

相关推荐
*长铗归来*16 分钟前
MySQL新学知识(二)MySQL存储过程
数据库·mysql
科兽的AI小记29 分钟前
从Coze到BuildingAI:一个程序员对开源AI应用平台的实战体验
数据库·开源·创业
Boop_wu2 小时前
[MySQL] 数据库设计
java·数据库·oracle
xiaoye37082 小时前
达梦数据库连接配置yaml 文件配置
服务器·数据库·oracle
TDengine (老段)3 小时前
TDengine 数学函数 PI 用户手册
大数据·数据库·时序数据库·iot·tdengine·涛思数据
aristo_boyunv3 小时前
Redis发布订阅【充当消息中间件】
数据库·redis·缓存
zz-zjx4 小时前
MySQL 开源主从复制实战指南(SRE 可靠性优先版)
数据库·mysql·开源
Microsoft Word11 小时前
向量数据库与RAG
数据库·人工智能·向量数据库·rag
艾德金的溪12 小时前
redis-7.4.6部署安装
前端·数据库·redis·缓存
小光学长12 小时前
基于Vue的2025年哈尔滨亚冬会志愿者管理系统5zqg6m36(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js