1
我有一个场景,我的评级和回合数组名为ratings
我需要根据回合(1,2,3,4)以降序排列评级。 我使用快递JS和查询对mongodb中的字段数组进行排序
查询:
**//Get top ratings based on round
exports.topRating = function(req, res) {
console.log(req.query);
Profiles.aggregate([{
$match: {
"hiringManager": req.query.hiringManager,
"ratings.round":parseInt(req.query.round)
}
},{ $sort : { "ratings.rating" : -1 } }],
function(err, profiles) {
if (err) {
return handleError(res, err);
}
console.log(profiles);
return res.status(200).json(fnStruncturedData(profiles));
});
};
模式:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var ProfilesSchema = new Schema({
name:String,
ratings: [{
round: Number,
rating: Number,
feedback: String,
interviewer: String,
roundStatus: String
}]
})
假设我有存储在DB数据如下
[{
name:"a",
ratings:[{
round: 1,
rating: 3,
feedback: "something",
interviewer: "abc",
roundStatus: "selected"
},
{
round: 2,
rating: 5,
feedback: "something",
interviewer: "abc",
roundStatus: "selected"
},
{
round: 3,
rating: 4,
feedback: "something",
interviewer: "abc",
roundStatus: "selected"
},{
round: 4,
rating: 1,
feedback: "something",
interviewer: "abc",
roundStatus: "selected"
}]
},
{
name:"b",
ratings:[{
round: 1,
rating: 5,
feedback: "something",
interviewer: "abc",
roundStatus: "selected"
},
{
round: 2,
rating: 4,
feedback: "something",
interviewer: "abc",
roundStatus: "selected"
},
{
round: 3,
rating: 3,
feedback: "something",
interviewer: "abc",
roundStatus: "selected"
},{
round: 4,
rating: 2,
feedback: "something",
interviewer: "abc",
roundStatus: "selected"
}]
}]
我在客户端选择轮次并相应地排在最前面评级将出现。 的说圆一个: 的数据进行排序,并根据查询我我首先得到name:b
数据在阵列 第二轮: 我应该得到name:a
第一阵列中的,但它再次显示第一 这里name:b
数据I (2,3,4)没有变化 我不明白什么是错误的查询 请帮助
添加样本数据和你会得到什么,什么是预期 –
还不是那么清晰。将预期和当前结果添加为json。 –
实际上它显示的是整体顶级评级而非圆明智 –