假设我有代表地理坐标的数据。
{"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
相互结合使用。
答案 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
}}
])