Mongodb聚合查询问题

时间:2014-11-30 07:18:14

标签: mongodb mongodb-query nosql

我有以下查询,应该为每个州获取在州内飞行的航班数量。基本上,原点状态和目标状态是相同的。非常直截了当。

function(){
  return db.flight_info.aggregate([
   { $project: { matches: { $eq:[ '$ORIGIN_STATE_ABR', '$DEST_STATE_ABR' ] }} },
   { $match: { matches:true } },
   { $group: { _id: "$ORIGIN_STATE_ABR", total: {$sum: 1} } }
  ]);
}

问题在于,由于某种原因,这实际上并不是对我的数据进行分组。输出看起来像这样:

 {
     "_id": null,
     "total": 61402 
 } 

虽然它应该是:

 {
     {"_id": "FL",
     "total": 620 },
     {"_id": "GA",
     "total": 896},
     ...
 }

1 个答案:

答案 0 :(得分:1)

您错过了$ project中的ORIGIN_STATE_ABR,这导致了分组中的问题。

db.flight_info.aggregate([
{ $project: { ORIGIN_STATE_ABR: 1,
             matches: { $eq:[ '$ORIGIN_STATE_ABR', '$DEST_STATE_ABR' ] } } },
{ $match: { matches:true } },
{ $group: { _id: "$ORIGIN_STATE_ABR", total: { $sum: 1 } } }
]);