0

コレクションムービーには 18 個のドキュメントがあります。たとえば、各映画について:

{
    title: "Test Movie 2",
    date: [20130808, 20130606],
    score: [ {"pete": 1, "mary": 1, "simon": 1, "pat": 2, "mike": 0},
             {"pete": 5, "mary": 5, "simon": 5, "pat": 0, "mike": 5}]
}

ここで、次のように、クライアントの配列「スコア」にある 2 番目のドキュメントの日付と合計を表示したいと思います。

<div class="details">
    Test Movie 2:   20 points   20130606
</div>

どうすればそれができるか誰か考えてくれませんか?

4

2 に答える 2

0

Mongo はおそらくこれを完全に行うことができますが、0.6.5 の時点での Mongo livedata パッケージの制限により、コレクションをクエリすることによってこれを直接行うことはできません。集約フレームワークも立ち入り禁止であり、Mongo への直接アクセスを許可する「隠し」メソッドをプルしたようです。

したがって、オプションは次のとおりです。

  • アクシャットの答えに従って変換を使用します-両方の長所

  • クライアントのテンプレート ヘルパーで手動で集計します。Meteor に「無料」で付属する _.js を使用することをお勧めします (これも変更される可能性がありますが、後でいつでもライブラリを手動で取り込むことができます)。

    var sum = _.reduce(score[1], function(memo, num){ return memo + num; }, 0);

    (私は上記をテストしませんでしたが、正しい軌道に乗るはずです)。

  • コレクションの変更を観察し、同じコレクションまたは集約コレクションに挿入する要素の sum() を「フィード」することにより、挿入/更新/削除中にアップストリームを集約します。

どの方法を使用するかは、パフォーマンスが最も重要な場所によって異なります。通常、挿入する前に集計を行うと、後で問題を回避する傾向があり、負荷が軽減されます。

頑張って、あなたがどのようにうまくいくか教えてください。

于 2013-08-19T12:28:59.130 に答える