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 に答える