私はさまざまな異なるクエリでカスタム検索を行う必要がある膨大な量のドキュメントを持つコレクションを持っています。 各ドキュメントにはブール値のプロパティがあります。それを "isInTop"としましょう。 すべてのクエリでこのプロパティを最初に持つドキュメントを表示する必要があります。 はい。最初にMongoDBの特定のプロパティを持つドキュメントを表示する最も速い方法
.sort({ isInTop: -1 });
フィールドの最後のフィールドとして「isInTop」フィールドを使用して適切なインデックスを作成します。しかし、これはゆっくりと働くでしょう。indexes in mongo works best with unique fieldsです。 各クエリの上にフィールド "isInTop"を持つドキュメントを表示するソリューションはありますか?
ここには2つの解決策があります。 最初に、「future」から_idの先頭にある必要があるドキュメントを設定します。ご存じのように、ObjectIdにはタイムスタンプが含まれています。だから、私は将来のタイムスタンプでObjectIdを作成して使用することができますnatural order
2番目:Ducumentsのために別のコレクションを作成する必要があります。そして、最初にクエリを実行します。
この問題には他に解決策がありますか?どのようなfaterを働かせますか?
更新 ランクを表すカスタムフィールドの並べ替えでこの問題が発生しました。
素晴らしい。良い答えと非常に有用なmorphiaを作成していただきありがとうございます。 – vacuum
私は特別なコレクションの作成について質問があります。 1つのコレクションで動作する既存のコードが多い場合、両方のコレクションを扱うにはどうすればよいですか? – vacuum