killAllSessions
定义
killAllSessions
版本 3.6 中的新增功能。
killAllSessions
命令会终止指定用户的所有会话。 [ 1 ]
语法
该命令具有以下语法:
db.runCommand( { killAllSessions: [ { user: <user>, db: <dbname> }, ... ] } )
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M 0 、M 2 、M 5和 M 10 + 集群不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
命令字段
该命令接受一个文档数组,每个文档指定用户和用户的身份验证数据库。指定一个空数组会终止系统中所有用户的所有会话。[1]
要查看现有会话,请参阅$listSessions
操作或$listLocalSessions
。
[1] | ( 1 , 2 ) killAllSessions 操作会忽略事务处于准备状态的会话。 有关详细信息,请参阅行为。 |
访问控制
如果部署强制执行身份验证/授权,则必须具有killAnySession
才能运行killAllSessions
命令。
注意
即使没有 killAnySession
特权动作,用户也可以终止自己的会话。
行为
进行中的操作
终止会话会终止会话中所有进行中的操作,并关闭与这些操作关联的所有打开的游标。
终止会话可用性
被终止的会话可能仍会列为当前会话,并且将来的操作可能会使用被终止的会话。 要查看现有会话,请参阅$listSessions
操作或$listLocalSessions
。
事务处于准备状态的会话
killAllSessions
操作会忽略事务处于准备状态的会话。 处于准备状态的事务是指具有跨多个分片的写入操作的事务,这些分片的提交协调器已完成"sendingPrepare"
action
。
示例
killAllSessions
以下操作将终止系统中所有用户的所有会话:
db.runCommand( { killAllSessions: [ ] } )
终止特定用户的所有会话
以下操作将终止 db1
数据库中用户 appReader
和 db2
数据库中用户 reportWriter
的所有会话:
db.runCommand( { killAllSessions: [ { user: "appReader", db: "db1" }, { user: "reportWriter", db: "db2" } ] } )