killAllSessionsByPattern
定义
killAllSessionsByPattern
的
killAllSessionsByPattern
命令终止所有匹配指定模式的会话。 [1]
语法
命令具有以下语法
db.runCommand( { killAllSessionsByPattern: [ <pattern>, ... ] } )
兼容性
此命令可在以下环境中部署的以下环境中使用
MongoDB Atlas:MongoDB在云中的托管服务
重要
此命令不支持在M0、M2和M5集群中。有关更多信息,请参阅不支持命令。
MongoDB企业版:MongoDB的基于订阅的自主管理版本
MongoDB社区版: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
权限操作,也可以终止自己的会话。
示例
终止所有会话
以下操作将终止所有会话
db.runCommand( { killAllSessionsByPattern: [ ] } )
终止特定用户的全部会话
以下操作将终止具有指定 uid
并且所属角色指定的所有会话
db.runCommand( { killAllSessionsByPattern: [ { "uid" : BinData(0,"oBRA45vMY78p1tv6kChjQPTdYsnCHi/kA/fFMZTIV1o=") }, { roles: [ { role: "readWrite", db: "test" } ] } ] } )