我有这个架构
var PostSchema = new Schema({
title: {type: String, trim: true}
, description: {type: String, trim: true}
, votes: [{ type: Schema.ObjectId, ref: 'User' }]
})
我想根据投票对帖子进行排序,即我需要按数组长度排序。
尝试通常的方式,但是没有工作
PostSchema.statics.trending = function (cb) {
return this.find().sort('votes', -1).limit(5).exec(cb)
}
任何帮助?
我正在使用的mongoose版本是2.7.2答案 0 :(得分:7)
你不能直接这样做。为了能够对数组长度进行排序,您必须将其保存在单独的字段(votes_count
或其他)中,并在将元素推送到/从votes
推送时更新它。
然后您对该votes_count
字段进行排序。如果您也将其编入索引,查询会更快。