8.2版本新增。
定义
语法
该阶段采用以下语法:
{ $score: { score: <expression>, scoreDetails: <boolean>, normalization: "none|sigmoid|minMaxScaler", weight: <expression> } }
字段
$score 采用以下字段:
字段 | 类型 | 说明 | ||
|---|---|---|---|---|
| 表达式(expression) | 根据输入分数计算新值并将该值存储在 | ||
| 布尔 | 默认值为 | ||
| 字符串 | 可选。将分数标准化为
| ||
| double | 可选。规范化后与 |
行为
$score 的输出文档与输入文档相同,但还包括作为元数据的附加计算分数。
如果您在管道中指定多个 $score 阶段,管道中的最后一个 $score 阶段将覆盖之前 $score 阶段的分数元数据。
分数详情
如果将 scoreDetails设立为 true,$score 则会为每个文档创建一个 scoreDetails 元元数据字段。scoreDetails字段包含有关最终排名的信息。
注意
当您将 scoreDetails设立为 true 时,$score 会为每个文档设置 scoreDetails 元元数据字段,但不会自动输出 scoreDetails 元字段。
要查看 scoreDetails元数据字段,您必须:
在
$score之后使用$project阶段项目scoreDetails字段在
$score之后使用$addFields阶段将scoreDetails字段添加到管道输出
scoreDetails字段包含以下子字段:
字段 | 说明 |
|---|---|
| 计算出的分数。 |
| 字符串格式的描述,解释 |
| 未加权的原始(未归一化)分数。 |
| 以下归一化值之一:“none”、“sigmoid”、“minMaxScaler”。 |
| 输入管道的权重,必须在 [0,1]范围内。 |
| 字符串格式的 |
| 空大量,因为 |
警告
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: [] } },