mongoose - 按数组长度排序

时间:2012-07-22 21:22:25

标签: mongodb sorting mongoose

我有这个架构

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

1 个答案:

答案 0 :(得分:7)

你不能直接这样做。为了能够对数组长度进行排序,您必须将其保存在单独的字段(votes_count或其他)中,并在将元素推送到/从votes推送时更新它。

然后您对该votes_count字段进行排序。如果您也将其编入索引,查询会更快。