服务器会话

在本页面

新增3.6版

概述

MongoDB的服务器会话或逻辑会话是客户端会话用来支持因果一致性和可重试写入的基础框架。

重要

应用程序使用客户端会话与服务器会话进行接口。

服务器会话仅可用于复制集和分片集群。

命令选项

从3.6开始,MongoDB驱动程序将所有操作与一个服务器会话关联起来,除了未确认的写操作。以下选项可用于所有命令,以支持与服务器会话的关联:

重要

mongo shell和驱动程序在会话中将这些选项分配给命令。

选项

类型

描述

lsid

文档

指定与命令关联的会话的唯一id的文档。如果指定了 txnNumber ,则需要 lsid

txnNumber

64位整数

一个严格递增的非负数,用于在命令的会话中唯一标识该命令。如果指定了该命令,则该命令还必须包含 lsid 选项。

删除,插入,和更新命令,采取一系列的语句,也可用以下选择:

对于deleteinsertupdate 命令,采取一系列的语句,以下选项也可:

重要

不要手动设置 stmtIds 。MongoDB将 stmtIds 设置为严格的非负数递增。

选项

Type

Description

stmtIds

32位整数的数组

在写命令中唯一标识其各自写操作的数字数组。

会话命令

The following commands can be used to list, manage, and kill server sessions throughout MongoDB clusters:

命令

描述

endSessions

指定的服务器会话过期。

killAllSessions

终止所有服务器会话。

killAllSessionsByPattern

终止与指定模式匹配的所有服务器会话。

killSessions

终止指定的服务器会话。

refreshSessions

刷新空闲服务器会话。

startSession

启动一个新的服务器会话。

会话和访问控制

如果部署强制执行身份验证/授权,则必须对用户进行身份验证才能启动会话,并且只有该用户才能使用该会话

在版本3.6.3中更改:使用 $external 身份验证用户(例如,Kerberos、LDAP、x.509个用户),用户名不能大于10k字节。

如果部署不强制执行身份验证/授权,则创建的会话没有所有者,并且可以由任何用户在任何连接上使用。如果用户对不执行身份验证/授权的部署进行身份验证并创建会话,则该用户将拥有该会话。但是,任何连接上的任何用户都可以使用该会话。

如果部署在没有任何停机的情况下转换到身份验证,则不能使用任何没有所有者的会话。

另请参阅:

maxSessions