0

カテゴリという名前のフィールドをそれぞれ含むドキュメント(投稿という名前の)のコレクションがあります。各カテゴリは、カテゴリコレクションの一部です。それらの数は決まっています(たとえば15)。

各カテゴリから最後の10個のtldrをフェッチするにはどうすればよいですか?

4

2 に答える 2

1

おそらく、最初にすべてのカテゴリのリストを取得してから、それぞれについて個別のクエリで最新の10件の投稿を取得する方がよいでしょう。

于 2013-03-20T14:30:54.300 に答える
1

別の解決策は、実際には結果の一部である各投稿に「フラグ」を設定することです。

topTen: true

そのフラグにスパースインデックスを定義すると、そのフラグのメンテナンスを犠牲にして、最速のクエリが得られます。

  • 挿入時にフラグを設定します(影響:更新するインデックスがもう1つあります)
  • 一定期間、クエリが10件ではなく11件の投稿を返すことが許容できる場合は、そのカテゴリの11番目のフラグを削除(設定解除)するバックグラウンドプロセスをトリガーします。
  • 許容できない場合は、挿入時に11番目のフラグを見つけて設定を解除します
  • 既存の投稿のカテゴリが変更された場合は、フラグが正しく設定されていることを確認してください(古いカテゴリと新しいカテゴリの場合)
  • フラグが設定されている投稿が削除された場合:新しい10番目の投稿のフラグを見つけて設定します
  • 定期的に実行されるプロセスを提供することをお勧めします。これにより、フラグがすべて適切に設定されていることを確認できます。

スパースインデックスの詳細については、http://docs.mongodb.org/manual/core/indexes/#index-type-sparseを参照してください。

于 2013-04-08T04:09:44.890 に答える