killAllSessionsByPattern
定义
killAllSessionsByPattern
版本 3.6 中的新增功能。
killAllSessionsByPattern
命令会终止与任何指定模式匹配的所有会话。 [ 1 ]
语法
该命令具有以下语法:
db.runCommand( { killAllSessionsByPattern: [ <pattern>, ... ] } )
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
命令字段
该命令接受指定要匹配模式的文档数组:
模式 | 说明 |
---|---|
{ lsid: { id : <UUID> } } | 指定要终止的会话 ID 的 UUID 部分。 |
{ uid: <BinData> } | 指定要终止的会话所有者的哈希值。 |
{ users: [ { user: <user>, db: <dbname> }, ... ] } | 指定要终止的会话的所有者。 需要额外权限。 请参阅访问控制。 |
{ roles: [ { role: <role>, db: <dbname> }, ... ] } | 指定分配给要终止的会话所有者的角色。 需要额外权限。 请参阅访问控制。 |
指定一个空数组以终止所有会话。 [1]
要查看现有会话,请参阅$listSessions
操作或$listLocalSessions
。
[1] | ( 1 , 2 ) killAllSessionsByPattern 操作会忽略事务处于准备状态的会话。 有关详细信息,请参阅行为。 |
行为
进行中的操作
终止会话会终止会话中所有进行中的操作,并关闭与这些操作关联的所有打开的游标。
终止会话可用性
被终止的会话可能仍会列为当前会话,并且将来的操作可能会使用被终止的会话。 要查看现有会话,请参阅$listSessions
操作或$listLocalSessions
。
事务处于准备状态的会话
killAllSessionsByPattern
操作会忽略事务处于准备状态的会话。 处于准备状态的事务是指具有跨多个分片的写入操作的事务,这些分片的提交协调器已完成"sendingPrepare"
action
。
访问控制
如果部署强制执行身份验证/授权,则您必须具有killAnySession
特权操作才能运行killAllSessionsByPattern
命令。
对于包含users
或roles
的模式,您还必须具有授予对集群资源执行impersonate
操作的权限。
注意
即使没有killAnySession
权限操作,用户也可以终止自己的会话。
示例
killAllSessions
以下操作会终止所有会话:
db.runCommand( { killAllSessionsByPattern: [ ] } )
终止特定用户的所有会话
以下操作会终止具有指定uid
且所有者具有指定角色的所有会话:
db.runCommand( { killAllSessionsByPattern: [ { "uid" : BinData(0,"oBRA45vMY78p1tv6kChjQPTdYsnCHi/kA/fFMZTIV1o=") }, { roles: [ { role: "readWrite", db: "test" } ] } ] } )