Database

[{route:[{index:0,lat:54,lng:13},{index:1,lat:32,lng:51},{index:2,lat:10,lng:30},{index:3,lat:54,lng:13}]},{route:[{index:0,lat:54,lng:13},{index:1,lat:32,lng:51},{index:1,lat:10,lng:30}]}]

Query

db.collection.find({route:{$all:[{$elemMatch:{lat:10,lng:30}},{$elemMatch:{lat:54,lng:13}}]},$expr:{$lt:[{$min:{$reduce:{input:"$route",initialValue:[],in:{$cond:[{$and:[{$eq:["$$this.lat",10]},{$eq:["$$this.lng",30]}]},{$concatArrays:["$$value",["$$this.index"]]},"$$value"]}}}},{$max:{$reduce:{input:"$route",initialValue:[],in:{$cond:[{$and:[{$eq:["$$this.lat",54]},{$eq:["$$this.lng",13]}]},{$concatArrays:["$$value",["$$this.index"]]},"$$value"]}}}}]}})

Result