複数の列にまたがる値でグループ化することは可能ですか?
人々の間のやり取りを日ごとに保存しているとしましょう。次のように、from と to をカウントして追跡します。
db.collection =
[
{ from : 'bob', to : 'mary', day : 1, count : 2 },
{ from : 'bob', to : 'steve', day : 2, count : 1 },
{ from : 'mary', to : 'bob', day : 1, count : 3 },
{ from : 'mary', to : 'steve', day : 3, count : 1 },
{ from : 'steve', to : 'bob', day : 2, count : 2 },
{ from : 'steve', to : 'mary', day : 1, count : 1 }
]
これにより、 をグループ化し、 を合計することで、たとえば'bob'
任意の 1 つとのすべての相互作用を取得できます。from:
count:
ここで、ユーザーのすべてのインタラクションを取得したいので、基本的に と の値でグループ化しfrom:
ますto:
。本質的に、それが中かcount:
どうかに関係なく、名前ごとに合計します。from:
to:
[アップデート]
望ましい出力は次のようになります。
[
{ name : 'bob', count : 8 },
{ name : 'mary', count : 7 },
{ name : 'steve', count : 3 }
]
最も簡単なのは、新しい列を作成してnames:
格納from:
し、to:
内部に格納$unwind
することですが、それは無駄に思えます。
ヒントはありますか?
ありがとう