次のコレクションがあるとします。
{ _id: 1, Array: [
{ K: "A", V: 8 },
{ K: "B", V: 5 },
{ K: "C", V: 13 } ] }
{ _id: 2, Array: [
{ K: "D", V: 12 },
{ K: "E", V: 14 },
{ K: "F", V: 2 } ] }
最高の「V」を持つサブドキュメントを返すクエリを実行したいので、その場合は次のようになります。
{ _id: 1, Array: [ { K: "E", V: 14 } ] }
または単に:
{ K: "E", V: 14 }
重要な部分は、Mongo サーバーのメモリ使用量を O(1) にしたいことです (処理するドキュメントの数に関係なく、メモリ使用量は一定です)。必要な値を持つその 1 つのサブドキュメントのみを取得したい(必要以上のサブドキュメントをダウンロードしたくありません)。
私の好みのアプローチは、単純な検索クエリを使用することですが、それが可能かどうかはわかりません。これは集計フレームワーク (または map reduce ?) でも実行できると思いますが、方法がわかりません。結果を一時的なコレクションに保存するのではなく、(通常のクエリのように) クライアントに直接返します。