MongoDB查询用于排序和限制结果

时间:2018-01-04 17:40:51

标签: node.js mongodb mongoose

我有两个型号用户和分数

用户模型SCHEMA:

var UserSchema = new mongoose.Schema({
firstName: String,
lastName: String,
createdAt: Date,
scores:[
    {
        type: mongoose.Schema.Types.ObjectId,
        ref: "Score"
    }
]
});

我的分数模型SCHEMA:

var  ScoreSchema =  new mongoose.Schema({
score: Number,
createdAt: Date
});

所以,基本上我试图以createdAt字段的排序顺序获得所有(限制:10)分数,并填充分数数组。

我正在使用的查询:

User.findOne({_id: id}).populate('scores').sort({createdAt:-1})
 .limit(10).exec(function (err, result) {
    if (err) {
        console.log(err);
        res.json({
            status: 'error',
            data: err
        })
    }
    else {
        res.json({
            status: 'ok',
            data: result
        })
    }
   })

我仍然以未分类的方式获得所有分数。 请帮忙

1 个答案:

答案 0 :(得分:0)

您的sort()limit()正在User模型上运行,而不是scores子文档数组。如果您想要子文档排序,您可能需要查看this post