2つのフィールドage_rank
を追加したようです 、average_age
。これらは、すでに持っているデータに基づいて効果的に計算されたフィールドです。ページビューとユーザーの誕生日を含むドキュメントを提供した場合、クライアントコードが最小/最大、平均などを見つけるのは非常に簡単なはずです。
サーバー側で集約を実行するようにMongoDBに要求しているようです。しかし、Map / Reduceを使用したくないという制限を追加していますか?
私があなたの質問を正しく理解しているなら、あなたは「このアイテムを配列に追加し、すべての依存アイテムを自動的に更新させる」と言うことができる何かを探しています。 ?リーダーにロジックを実行させたくない場合は、サーバー側ですべてを「魔法のように」実行する必要があります。
したがって、これに取り組むには3つの異なる方法がありますが、現在利用できるのはそのうちの1つだけです。
- このロジックをクライアント側に記述します。それはあなたが望む解決策のようには聞こえませんが、それは機能します。基礎となるデータがある場合、max / min / med / avgを実行することは、ほとんどの言語で非常に簡単なはずです。
- 集約 の今後の機能を活用する 。これらは1.9.xまでスケジュールされていません。改善された集計により、探しているデータを抽出できますが、それでも適切なクエリを作成する必要があります。基盤となるDBには、探しているデータがまだ含まれていません。
- トリガー が必要です 。 DBが常に一貫性を保ち、要約されたデータを含むようにしたい場合は、これが必要です。ただし、トリガー機能はまだ存在していません。
残念ながら、現時点での唯一の選択肢は#1です。幸い、オプション#1をうまく使用している人を何人か知っています。