PHP Conference Japan 2024

MongoDB\Driver\ClientEncryption::encryptExpression

(mongodb >=1.16.0)

MongoDB\Driver\ClientEncryption::encryptExpression加密匹配或聚合表达式

描述

final public MongoDB\Driver\ClientEncryption::encryptExpression(数组|对象 $expr, ?数组 $options = null): 对象

加密匹配或聚合表达式以查询范围索引。

要使用范围加密有效负载查询,必须使用 "autoEncryption" 驱动程序选项配置 MongoDB\Driver\Manager"bypassQueryAnalysis" 自动加密选项可以为 true"bypassAutoEncryption" 自动加密选项必须为 false

注意:

扩展尚不支持 Decimal128 BSON 字段类型的范围查询。

参数

expr

要加密的匹配或聚合表达式。表达式必须使用至少一个 $gt$gte$lt$lte 运算符。即使仅使用单个比较运算符,也需要顶级 $and 运算符。

支持的匹配表达式的示例(适用于查询和 $match 聚合阶段)如下所示

[
    '$and' => [
        [ '<field>' => [ '$gt'  => '<value1>' ] ],
        [ '<field>' => [ '$lte' => '<value2>' ] ],
    ],
]

支持的聚合表达式的示例如下所示

[
    '$and' => [
        [ '$gte' => [ '<fieldPath>', '<value1>' ] ],
        [ '$lt'  => [ '<fieldPath>', '<value2>' ] ],
    ],
]
options

加密选项
选项 类型 描述
algorithm 字符串

要使用的加密算法。此选项是必需的。指定以下 ClientEncryption 常量 之一

contentionFactor 整数

用于评估具有索引加密有效负载的查询的争用因子。

此选项仅适用于 algorithmMongoDB\Driver\ClientEncryption::ALGORITHM_INDEXEDMongoDB\Driver\ClientEncryption::ALGORITHM_RANGE 时,并且只能在此情况下指定。

keyAltName 字符串

通过 keyAltName 标识密钥保管库集合文档。此选项与 keyId 互斥,并且需要且仅需要一个。

keyId MongoDB\BSON\Binary

通过 _id 标识数据密钥。该值是 UUID(二进制子类型 4)。此选项与 keyAltName 互斥,并且需要且仅需要一个。

queryType 字符串

用于评估具有索引加密有效负载的查询的查询类型。指定以下 ClientEncryption 常量 之一

此选项仅适用于 algorithmMongoDB\Driver\ClientEncryption::ALGORITHM_INDEXEDMongoDB\Driver\ClientEncryption::ALGORITHM_RANGE 时,并且只能在此情况下指定。

rangeOpts 数组

支持“范围”查询的可查询加密字段的索引选项。以下选项必须与目标集合的 encryptedFields 中设置的值匹配。对于双精度和 decimal128 BSON 字段类型,必须全部设置 minmaxprecision,或者全部不设置。

范围索引选项
选项 类型 描述
min 混合 如果设置了 precision,则为必需。范围的最小 BSON 值。
max 混合 如果设置了 precision,则为必需。范围的最大 BSON 值。
sparsity 整数 可选。正 64 位整数。
precision 整数 可选。正 32 位整数,指定用于显式加密的精度。仅可为双精度或 decimal128 BSON 字段类型设置。
trimFactor 整数 可选。正 32 位整数。

返回值

将加密的表达式作为对象返回。

错误/异常

变更日志

版本 描述
PECL mongodb 1.20.0 添加了 "trimFactor" 范围选项。"sparsity" 范围选项现在是可选的。

参见

添加注释

用户贡献注释

此页面没有用户贡献的注释。
To Top