Slide 57
Slide 57 text
Aggregation Pipeline
Complex operations
[
{ '$setWindowFields': {
'sortBy': { 'time': 1 },
'output': {
'previousPosition': {
'$shift': {
'by': -1,
'default': null,
'output': { 'time': '$time', 'latitude': '$latitude', 'longitude': '$longitude' }
}
}
}
}},
{ '$addFields': {
'bearing': {
'$radiansToDegrees': {
'$atan2': [
{ '$multiply': [
{ '$cos': '$latitude' },
{ '$sin': { '$subtract': [ '$longitude', '$previousPosition.longitude' ] } }
]},
{ '$subtract': [
{ '$multiply': [
{ '$cos': '$previousPosition.latitude' },
{ '$sin': '$latitude' }
]},
{ '$multiply': [
{ '$sin': '$previousPosition.latitude' },
{ '$cos': '$latitude' },
{ '$cos': { '$subtract': ['$longitude', '$previousPosition.longitude'] } }
]}
]}
]
}
}
}}
]