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

이 페이지의 내용