mongoose - 按数组长度排序

4

I am having this schema

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个回答

8
你不能直接这样做。为了能够按数组长度排序,你需要在一个单独的字段中维护它(例如 votes_count),并且在将元素推入/弹出 votes 时更新它。
然后按照 votes_count 字段进行排序。如果你还索引它,查询会更快。

如何查询? - chovy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接