Docs Menu
Docs Home
/
データベース マニュアル
/ / /

$score(集計)

バージョン8.2の新機能

$score

$score は新しいスコアを計算し、メタデータとして返します。オプションとして、入力スコアを正規化します。デフォルトでは 0 から 1 の範囲で正規化します。

このステージの構文は、次のとおりです。

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

$score は、次のフィールドがあります。

フィールド
タイプ
説明

score

入力スコアから新しい値を計算し、その値を $meta キーワード searchScore に保存します。その他のすべてのスコアは、$meta キーワード searchScoreDetails に保存されます。数値以外の入力の場合はエラーを返します。

normalization

文字列

任意。スコアを 0 から 1 の範囲に正規化します。値は次のとおりです。

  • 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 ステージのスコアメタデータを上書きします。

articles という名前のコレクションに含まれる以下のドキュメントを考えます。

{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "views" : 100 },
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "views" : 521 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b257"), "author" : "ahn", "score" : 60, "views" : 1000 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b258"), "author" : "li", "score" : 55, "views" : 5000 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b259"), "author" : "annT", "score" : 60, "views" : 50 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25a"), "author" : "li", "score" : 94, "views" : 999 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25b"), "author" : "ty", "score" : 95, "views" : 1000 }

次のクエリでは、 を使用します。

  • $match ステージ: viewsフィールドの値が 1000 以上のドキュメントをフィルタリングします。

  • $score ステージでは、$sigmoid 式を使用して正規化され、指定された重みを掛けた新しいスコア 1 を計算します。

db.articles.aggregate([
{
$match: {
views: { $gte: 1000 }
}
},
{
$score: {
score: "$score",
normalization: "sigmoid",
weight: 1
}
},
{
"$project": {
"_id": 0,
"author": 1,
"views": 1,
"score": 1,
"calculatedScore": { $meta: "score" }
}
}
])
[
{ author: 'ahn', score: 60, views: 1000, calculatedScore: 1 },
{ author: 'li', score: 55, views: 5000, calculatedScore: 1 },
{ author: 'ty', score: 95, views: 1000, calculatedScore: 1 }
]

戻る

$sample

項目一覧