按数组元素(文档)字段排序 - MongoDB / Mongoose

时间:2014-11-18 05:35:56

标签: node.js mongodb sorting

这是架构的关注部分

`

var CandidateSchema = new Schema({
calculateScore:[{
jobname:{type:Schema.ObjectId,ref: 'Job'}
,Score:{type:Number,default:0}
}]
})

`

候选人可以申请多个工作,并为不同的工作获得不同的得分。我想根据具体工作的分数对候选人进行排序。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

假设变量objectId包含引用ObjectId的{​​{1}},您可以聚合记录以获得记录Job的特定分数{{1} }}

由于舞台操作符sorted不支持Job操作,我们无法使用它直接获取我们想要的Job子文档并根据它进行排序。

  • $project一个名为$elemeMatch的单独$project,其中包含原始field数组的副本。
  • temp_score来自calculateScore的其他子文档,而$redact除了calculateScore之外的其他子文档 jobname我们正在寻找。现在id只包含一个 数组中的元素,即calculateScorejobname的元素 我们已经指定了。
  • 根据此子文档的得分idsort中的记录 顺序。
  • 完成descending后,投影原始sorting 字段,位于calculatescore

代码:

temp_score