私は投票&票を持っています。私はトップ投票(投票が最も多い投票)を並べ替えたいと思います。 これは私のスキーマです:マングースを参考にして並べ替え
pollSchema = Schema ({
...
};
voteSchema = Schema ({
...
poll: { type: Schema.ObjectId, ref: "Poll" },
user: { type: Schema.ObjectId, ref: "User" }
};
だから、基本的には、各投票それが属するポーリングにポイントではなく、他の方法で回避(シングル「真実のソース」を保つために)。
(なぜなら、私が投票している投票をサブ文書として保持しない理由は、投票が投票者を参照する必要があるからです)。
私は、すべての投票を並べ替える簡単な方法を見つけるのに苦労しています。どの投票がそれらを指しているのか(基本的には投票の投票数による並べ替え投票です)。
は勿論、ハードな作業の方法(擬似コード)があります:
- find all polls (Poll.find({}))
- count all votes to each poll and keeping it in a counter on each poll object (Vote.count({ poll: polls[i].id }))
- sort the polls like a regular javascript array
これは勿論動作するはずですが、私は1つのが存在する場合は、より良い方法を探しています。 mongooseにnewbの種類があるので、私はドキュメントを読んで何かを見逃しているかもしれません。
閉じる。そのアイデアの代わりに全投票オブジェクトを取得する方法はありますか?そうでなければ、これはまだ非常に有用ですので、ありがとう! –
新しいバージョンのMongo(3.2など)を使用している場合は、方法があります。アップデートの回答を参照してください。 –
恐ろしい!ありがとう。投票をどのようにフィルタリングすることができますか?私は定期的に 'polls.find({title: 'bla'})'を実行するので、あなたが指定したコードに 'find'を渡すとうまくいくのでしょうか? –