求和相同字段的多个实例?

时间:2016-03-17 17:42:20

标签: mongodb aggregation-framework

假设我有代表地理坐标的数据。

{"latitude" : 32.7874, "longitude" : -96.7989, "ip" : "1.1.1.1", "load" : 10}
{"latitude" : 32.7874, "longitude" : -96.7989, "ip" : "2.2.2.2", "load" : 5}

使用db.collection.aggregate(),我将如何实现结果:

{"latitude" : 32.7874, "longitude" : -96.7989, "load" : 15}

由于纬度和经度必须相等才能求和,我不确定如何使用$group

我也知道$project将允许我控制我在结果中获得哪些字段,但我不确定如何将$group$sum相互结合使用。

1 个答案:

答案 0 :(得分:1)

您可以在_id的{​​{1}}定义中添加多个字段,然后使用最终的$group阶段重新整理文档:

$project

结果:

db.test.aggregate([
  {$group: {
    _id: {latitude: '$latitude', longitude: '$longitude'},
    load: {$sum: '$load'}
  }},
  {$project: {
    _id: 0,
    latitude: '$_id.latitude',
    longitude: '$_id.longitude',
    load: 1
  }}
])