如何按列值对数据进行分组?

时间:2013-09-02 10:53:26

标签: node.js mongodb

我有一些这样的数据:

[ 
 { date: '02.09.2013',
    start_at: '22:00',
    team1: 'Арсенал Саранди',
    team2: 'Архентинос Жуниорс',
    score1: '-',
    score2: '-',
    chemp: 'Аргентина. Инисиаль',
    _id: 52246c1f5fb4360000000001 },
  { date: '02.09.2013',
    start_at: '00:30',
    team1: 'Крузейро',
    team2: 'Васку да Гама',
    score1: '5',
    score2: '3',
    chemp: 'Бразилия. Серия А',
    _id: 52246c1f5fb4360000000002 },
  { date: '02.09.2013',
    start_at: '03:15',
    team1: 'Сан-Лоренсо',
    team2: 'Ривер Плейт',
    score1: '1',
    score2: '0',
    chemp: 'Аргентина. Инисиаль',
    _id: 52246c1f5fb4360000000003 },
  { date: '02.09.2013',
    start_at: '22:00',
    team1: 'Эшторил',
    team2: 'Академика',
    score1: '-',
    score2: '-',
    chemp: 'Португалия. Лига Сагреш',
    _id: 52246c205fb4360000000004 } 
 ]

我如何获得它并按chemp值分组?

更新 最终的解决方案是:

collection.aggregate({ $project : {
                 chemp: 1,
                 team1: 1,
                 team2: 1,
                 score1: 1,
                 score2: 2,
                 start_at: 1
               }
    }, { $group : { _id : { chemp : "$chemp" }, games: {$push: {team1: "$team1", team2: "$team2", score1: "$score1", score2: "$score2", start_at: "$start_at"}} } }, function(err, data){
        db.close();
      }
    )

1 个答案:

答案 0 :(得分:2)

下面给出的查询将在chemp上进行一组。

  db.collection_name.aggregate(                   
      { $group : {
                   _id : { chemp : "$chemp" }
                   total:{$sum:1}
                 }
      }
    )

有关详细信息,请参阅以下链接:

http://docs.mongodb.org/manual/reference/method/db.collection.aggregate/#db.collection.aggregate

PS:您需要使用mongo 2.2版才能使用此聚合框架。对于旧版本的mongo,您可以使用map / reduce。