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

标签 node.js mongodb sorting

这是模式中的相关部分

`

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

`

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

最佳答案

假设变量 objectId 包含所引用的 JobObjectId,您可以聚合记录以获得记录 sorted 通过该特定 Job 的得分。

由于stage操作符$project不支持$elemeMatch操作,我们无法直接使用它来获取我们想要的Job子文档并根据它进行排序.

  • $project 一个名为 temp_score 的单独字段,以包含原始 calculateScore 数组的副本。<
  • $redact 来自 calculateScore 的其他子文档,而不是其 jobname 包含 id 我们正在寻找。现在 calculateScore 将只包含一个 数组中的元素,即 jobnameid 的元素 我们指定的。
  • 根据该子文档的得分排序降序中的记录 订单。
  • 完成排序后,投影我们原来的calculatescore 字段,在 temp_score 中。

代码:

var objectId = ObjectId("ObjectId of the referred Job"); // Needs to be fetched 
                                                       // from the Job collection.
model.aggregate(
{$project:{"temp_score":{"level":{$literal:1},
                         "calculateScore":"$calculateScore"},
           "calculateScore":1}},
{$redact:{$cond:[
                 {$and:[
                        {$eq:[{$ifNull:["$jobname",objectId]},objectId]},
                        {$ne:["$level",1]}
                       ]
                 },
                 "$$DESCEND",
                  {$cond:[{$eq:["$level",1]},
                          "$$KEEP","$$PRUNE"]}]}},
{$sort:{"calculateScore.Score":-1}},
{$project:{"_id":1,
           "calculateScore":"$temp_score.calculateScore"}},
function(err,res)
{
    console.log(res);
}
);

关于node.js - 按数组元素(文档)字段排序 - MongoDB/Mongoose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26987331/

相关文章:

javascript - 在node.js中通过http.ClientRequest实现接口(interface)是什么意思?

node.js - Grunt CLI 尝试编译 bootstrap.less 时崩溃

javascript - 在 mongodb 中使用外部引用进行聚合

c++ - 使用 std::sort 对二维 c 数组进行排序

java - 桶排序中的桶大小

c# - 未使用排序或 Linq OrderBy 方法的无序数组中的前 K 个数字

javascript - Twitter API - 发布收藏夹/创建特定速率限制

node.js - 如何将Heroku API(服务器/node-express)连接到自定义域gh-pages

mongodb - ubuntu 安装 mongodb 错误 :Failed to connect to 127. 0.0.1:27017

python - Pymongo,查询列表字段,和/或