버전 8.2에 추가 되었습니다.
정의
구문
이 단계에는 다음 구문이 있습니다.
{ $score: { score: <expression>, normalization: "none|sigmoid|minMaxScaler", weight: <expression> } }
필드
$score 은(는) 다음 필드를 사용합니다.
필드 | 유형 | 설명 | ||
|---|---|---|---|---|
| 표현식 | 입력 점수에서 새 값을 계산하고 | ||
| 문자열 | 선택 사항. 점수를
| ||
| Double | 선택 사항. 정규화 후 |
행동
$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 } ]