さまざまなクエリを使用してカスタム検索を行う必要がある膨大な量のドキュメントを含むコレクションがあります。各 Document には boolean プロパティがあります。それを「isInTop」と呼びましょう。すべてのクエリで最初にこのプロパティを持つドキュメントを表示する必要があります。はい。次のように、このフィールドで簡単に並べ替えることができます。
.sort( { isInTop: -1 } );
そして、フィールド「isInTop」を最後のフィールドとして適切なインデックスを作成します。ただし、mongo のインデックスは一意のフィールドで最適に機能するため、これはゆっくりと機能します。各クエリの上に「isInTop」フィールドを持つドキュメントを表示するソリューションはありますか?
ここには 2 つの解決策があります。最初に: "future" の _id の先頭にある必要があるドキュメントを設定します。ご存じのとおり、ObjectId にはタイムスタンプが含まれています。したがって、将来のタイムスタンプで ObjectId を作成し、自然順序を使用できます
2 番目: 一番上にある必要がある Ducuments の別のコレクションを作成します。そして、最初にクエリを実行します。
この問題に対する他の解決策はありますか? どちらがよりうまく機能しますか?
更新 ランクを表すカスタムフィールドでソートしてこの問題を解決しました。