MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs 菜单
Docs 主页
/ /

$score(聚合)

8.2版本新增

$score

$score 计算并返回一个新分数作为元数据。它还可以选择将输入分数标准化,默认为 0 到 1 之间的范围。

该阶段采用以下语法:

{
$score: {
score: <expression>,
scoreDetails: <boolean>,
normalization: "none|sigmoid|minMaxScaler",
weight: <expression>
}
}

$score 采用以下字段:

字段
类型
说明

score

表达式(expression)

根据输入分数计算新值并将该值存储在$meta 关键字score 中。为非数字输入返回错误。

scoreDetails

布尔

默认值为false 。指定$score 是否计算并填充每个输出文档的$scoreDetails 元数据字段。有关该字段的更多信息,请参阅 scoreDetails。

normalization

字符串

可选。将分数标准化为 01 的范围。值可以是:

  • none - 不正常化。

  • sigmoid — 应用以下$sigmoid表达式:

    1 / (1 + e^-x)

    这里,x 是要标准化的分数。

    如果省略,则默认值为 none

  • minMaxScaler -应用$minMaxScaler窗口函数:

    (s - min_s) / (max_s - min_s)

    其中:

    • s 是分数。

    • min_s 是最低分数。

    • max_s 是最高分数。

weight

double

可选。规范化后与 score表达式相乘的数字。

$score 的输出文档与输入文档相同,但还包括作为元数据的附加计算分数。

如果您在管道中指定多个 $score 阶段,管道中的最后一个 $score 阶段将覆盖之前 $score 阶段的分数元数据。

如果将 scoreDetails设立为 true$score 则会为每个文档创建一个 scoreDetails 元元数据字段。scoreDetails字段包含有关最终排名的信息。

注意

当您将 scoreDetails设立为 true 时,$score 会为每个文档设置 scoreDetails 元元数据字段,但不会自动输出 scoreDetails 元字段。

要查看 scoreDetails元数据字段,您必须:

  • $score 之后使用 $project 阶段项目scoreDetails字段

  • $score 之后使用 $addFields 阶段将 scoreDetails字段添加到管道输出

scoreDetails字段包含以下子字段:

字段
说明

value

计算出的分数。

description

字符串格式的描述,解释 $score operationMetrics 如何计算最终分数。

rawScore

未加权的原始(未归一化)分数。

normalization

以下归一化值之一:“none”、“sigmoid”、“minMaxScaler”。

weight

输入管道的权重,必须在 [0,1]范围内。

expression

字符串格式的 $score.score 值。

details

空大量,因为 $score 不能接受任何输入管道。

警告

MongoDB不保证 scoreDetails 的任何特定输出格式。

示例,以下代码块显示带有 $add表达式的 $score 操作的 scoreDetails字段:

{
_id: ObjectId('55f5a192d4bede9ac365b257'),
scoreDetails: {
value: 0.5,
description: 'the score calculated from multiplying a weight in the range [0,1] with either a normalized or nonnormalized value:',
rawScore: 145,
normalization: 'sigmoid',
weight: 0.5,
expression: '{ string: { $add: [ 'field', 'myField' ] } }',
details: []
}
},

后退

$sample

在此页面上