这是架构的关注部分
`
var CandidateSchema = new Schema({
calculateScore:[{
jobname:{type:Schema.ObjectId,ref: 'Job'}
,Score:{type:Number,default:0}
}]
})
`
候选人可以申请多个工作,并为不同的工作获得不同的得分。我想根据具体工作的分数对候选人进行排序。有什么想法吗?
答案 0 :(得分:1)
假设变量objectId
包含引用ObjectId
的{{1}},您可以聚合记录以获得记录Job
的特定分数{{1} }}
由于舞台操作符sorted
不支持Job
操作,我们无法使用它直接获取我们想要的Job子文档并根据它进行排序。
$project
一个名为$elemeMatch
的单独$project
,其中包含原始field
数组的副本。temp_score
来自calculateScore
的其他子文档,而$redact
除了calculateScore
之外的其他子文档
jobname
我们正在寻找。现在id
只包含一个
数组中的元素,即calculateScore
为jobname
的元素
我们已经指定了。id
,sort
中的记录
顺序。descending
后,投影原始sorting
字段,位于calculatescore
。代码:
temp_score