4

我有这个架构

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)
}

有什么帮助吗?

我使用的猫鼬版本是 2.7.2

4

1 回答 1

8

你不能直接这样做。为了能够对数组长度进行排序,您必须将其维护在一个单独的字段(votes_count或其他任何内容)中,并在您向/从 推/拉元素时更新它votes

votes_count然后你在那个字段上排序。如果你也索引它,查询会更快。

于 2012-07-22T21:24:33.390 回答