1

検索の結果、次のレコードセットがあります。

[{ 'programming': 7 },
{ 'programming': 9 },
{ 'programming': 6 },
{ 'programming': 10 },
{ 'music': 1 },
{ 'music': 2 },
{ 'music': 3 },
{ 'music': 4 }]

それらをキーでグループ化し、値を合計して、次のようにします。

[{'programming': 32},
 {'music': 10}]

それらを値で並べ替え (この場合、最初にプログラミング、次に音楽)、3 で制限します ( 、 、および がある場合は、、programming 32およびmusic 10のみshopping 3lifestyle 1返します。programmingshoppinglifestyle

そのようなデータをどのように集計しますか? mapreduce、aggregate、または単に group を使用する必要がありますか? もしそうなら、辞書キーでグループにグループを伝える方法は?

ありがとう

4

3 に答える 3

1

キーでそれを行うと、クエリの保守性が失われます。

私の最善のヒントは、たとえば、別のキーskill(ドキュメントのグループ化キーになる) と というキーを作成することvalueです。
次に、次のようなクエリを取得します。

db.skills.aggregate([{
  $group: {
    _id: "$skill",
    value: { $sum: "$value" }
  }
}])
于 2013-05-28T11:28:32.037 に答える