Database
[{"_id":1,"device":{"deviceId":"A1","deviceName":"Some_device"},"location":{"latitude":12.3456,"longitude":-78.9}},{"_id":2,"device":{"deviceId":"A2","deviceName":"Some_other_device"},"location":{"latitude":12.3456,"longitude":-78.9}},{"_id":3,"device":{"deviceId":"A1","deviceName":"Some_device"},"location":{"latitude":11.1111,"longitude":-55.5555}},{"_id":4,"device":{"deviceId":"B1","deviceName":"New_device"},"location":{"latitude":12.3456,"longitude":-55.5555}}]
Query
db.collection.aggregate([{"$group":{"_id":{latitude:"$location.latitude",longitude:"$location.longitude"},"deviceId":{"$addToSet":"$device.deviceId"},"deviceName":{"$addToSet":"$device.deviceName"}}},{"$project":{_id:0,location:{latitude:"$_id.latitude",longitude:"$_id.longitude"},device:{deviceId:"$deviceId",deviceName:"$deviceName"}}}])