La 2dsphere non supporta la query $box. Ecco perché la tua query passa a una scansione completa della raccolta.
La casella documentazione afferma quanto segue:
Only the 2d geospatial index supports $box
L'aggiunta di un indice 2d dovrebbe fare il trucco, qualcosa del tipo:
db.property.ensureIndex({"details.lonlat": "2d"});