MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Menu Docs
Página inicial do Docs
/ /

$score (agregação)

Novidades na versão 8.2.

$score

$score calcula e retorna uma nova pontuação como metadados. Ele também normaliza opcionalmente as pontuações de entrada, por padrão para um intervalo entre zero e um.

O estágio tem a seguinte sintaxe:

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

$score usa os seguintes campos:

Campo
Tipo
Descrição

score

Expressão

Calcula um novo valor a partir das pontuações de entrada e armazena o valor na palavra-chave $meta score. Retorna um erro para entradas não numéricas.

scoreDetails

Boolean

O padrão é false. Especifica se $score calcula e preenche o campo de metadados $scoreDetails para cada documento de saída. Consulte scoreDetails para obter mais informações sobre este campo.

normalization

String

Opcional. Normaliza a pontuação para o intervalo de 0 a 1. O valor pode ser:

  • none - Não normaliza.

  • sigmoid - Aplica a seguinte $sigmoid expressão:

    1 / (1 + e^-x)

    Aqui, x é a pontuação a ser normalizada.

    Se omitido, o padrão é none.

  • minMaxScaler - para aplicar a função de janela $minMaxScaler:

    (s - min_s) / (max_s - min_s)

    Onde:

    • s é a pontuação.

    • min_s é a pontuação mínima.

    • max_s é a pontuação máxima.

weight

Double

Opcional. Número pelo qual multiplicar a expressão score após a normalização.

Os documentos de saída de um $score são iguais aos documentos de entrada, mas incluem pontuação computada adicional como metadados.

Se você especificar vários estágios $score no pipeline, o último estágio $score no pipeline substituirá os metadados de pontuação dos estágios $score anteriores.

Se você definir scoreDetails como true, $score criará um campo de metadados scoreDetails para cada documento. O campo scoreDetails contém informações sobre a classificação final.

Observação

Quando você define scoreDetails como true, $score define o campo de metadados scoreDetails para cada documento , mas não gera automaticamente o metacampo scoreDetails.

Para visualizar o campo de metadados scoreDetails, você deve:

  • usar um $project estágio após $score para projetar o campo scoreDetails

  • use um $addFields estágio após $score para adicionar o campo scoreDetails à saída do pipeline

O campo scoreDetails contém os seguintes subcampos:

Campo
Descrição

value

A pontuação calculada.

description

Uma descrição no formato de string que explica como o operationMetrics do $score calcula a pontuação final.

rawScore

A pontuação bruta não ponderada (não normalizada).

normalization

Um dos seguintes valores de normalização: "none", "sagmoid", "minMaxScaler".

weight

O peso do pipeline de entrada, que deve estar na faixa [0,1].

expression

O valor de $score.score no formato de string.

details

Uma array vazia, pois $score não pode receber nenhum pipeline de entrada.

Aviso

O MongoDB não garante nenhum formato de saída específico para scoreDetails.

Por exemplo, os seguintes blocos de código mostram o campo scoreDetails para uma operação $score com uma expressão $add:

{
_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: []
}
},

Voltar

$sample

Nesta página