likes
とdate
に基づいてデータベースからの投稿のリストを表示するには、基本的な "トレンド"アイテムのページを考えてください。"ホット"投稿のマングースクエリ
score = likes/daysSinceCreation
のような公式を使用して、このスコアに基づいて最初の10の投稿を取得します。
mongoDB/Mongooseでどのようにソート機能を追加できますか?が、私はからすべての項目を得ることなく、より複雑なソート機能を実装する方法
Posts.find().sort(???).limit(10).then(posts => console.log(posts));
は現在、私は先週のトップのポストを得ることができます(先週とスコアによって順位より大きい作成日時があれば見つけます。) DB?
例: 今日は金曜日
ID CREATION_DAY LIKES
1 Monday 4 // score is 5/5 = 0
2 Tuesday 10 // score is 10/4 = 2
3 Wednesday 3 // score is 3/3 = 1
4 Thursday 20 // score is 20/2 = 10
5 Friday 5 // score is 5/1 = 5
IDの
ソートされたリストは次のとおりです。[4 (Th), 5 (Fr), 2 (Tu), 3 (We), 1(Mo)]
ページめくりをしたいのですか、あるいは単に固定した「トップ10」ですか?私がこれを行うと考えることができる唯一の方法は、集約パイプラインを使用することです。しかし、あなたがそれをやっているなら、計算後にソートするので、呼び出される頻度やデータの量によっては重くなる可能性があります。私はおそらくIDまたはドキュメント自体を別の "一時的な"コレクションに集約し、そのコレクションを照会します。あなたのデータのサイズ、クエリ/計算/更新頻度、ページ設定などにかなり依存しています。 – cdbajorin
これはおそらく、トレンドアイテムが表示されているサイトのホームページで、redditを考えています。したがって、すべてのユーザーがクエリをトリガします。私はそれがキャッシュされ、1時間に1回しか更新できないと思います。 – Cristy
'Post'スキーマを追加できますか? – cdbajorin