sql >> データベース >  >> NoSQL >> MongoDB

MongoDBでのリアルタイムアグリゲーションの戦略

    2つのフィールドage_rankを追加したようです 、average_age 。これらは、すでに持っているデータに基づいて効果的に計算されたフィールドです。ページビューとユーザーの誕生日を含むドキュメントを提供した場合、クライアントコードが最小/最大、平均などを見つけるのは非常に簡単なはずです。

    サーバー側で集約を実行するようにMongoDBに要求しているようです。しかし、Map / Reduceを使用したくないという制限を追加していますか?

    私があなたの質問を正しく理解しているなら、あなたは「このアイテムを配列に追加し、すべての依存アイテムを自動的に更新させる」と言うことができる何かを探しています。 ?リーダーにロジックを実行させたくない場合は、サーバー側ですべてを「魔法のように」実行する必要があります。

    したがって、これに取り組むには3つの異なる方法がありますが、現在利用できるのはそのうちの1つだけです。

    1. このロジックをクライアント側に記述します。それはあなたが望む解決策のようには聞こえませんが、それは機能します。基礎となるデータがある場合、max / min / med / avgを実行することは、ほとんどの言語で非常に簡単なはずです。
    2. 集約 の今後の機能を活用する 。これらは1.9.xまでスケジュールされていません。改善された集計により、探しているデータを抽出できますが、それでも適切なクエリを作成する必要があります。基盤となるDBには、探しているデータがまだ含まれていません。
    3. トリガー が必要です 。 DBが常に一貫性を保ち、要約されたデータを含むようにしたい場合は、これが必要です。ただし、トリガー機能はまだ存在していません。

    残念ながら、現時点での唯一の選択肢は#1です。幸い、オプション#1をうまく使用している人を何人か知っています。



    1. 配列内のMongoDB名前変更データベースフィールド

    2. $set更新演算子がMongoDBでどのように機能するか

    3. 非同期関数node.jsからの戻り値

    4. mongodbで、$ in演算子と一致する配列要素のインデックスを知っていますか?