Finalmente ho trovato la risposta al mio problema. Teoricamente la longitudine è l'asse x e la latitudine è l'asse y. Ma siamo abituati a latitudine-longitudine piuttosto che longitudine-latitudine... Quindi il modo in cui stavo cercando era sbagliato
$near : [msg.lat, msg.lng]
Quando l'ho modificato in $near :[msg.lng, msg.lat] , ha iniziato a funzionare anche con 5KM... Quindi il problema era l'ordine.