Предположим, вы хотели бы передать String в файл (да, это не имеет никакого смысла), вы не можете использовать его напрямую, потому что класс File не является дочерним, а не родительским классом String (и компилятор жалуется) , Но вы можете использовать String для Object, потому что String - объект (Object is parent). Затем вы можете применить этот объект к файлу, потому что File является объектом. Таким образом, все ваши операции являются «законными» с точки ввода текста во время компиляции, но это не значит, что он будет работать во время выполнения!
File f = (File)(Object) "Stupid cast";
Компилятор позволит это, даже если он не имеет смысл, но он будет сбой при выполнении с этим исключением:
Exception in thread "main" java.lang.ClassCastException:
java.lang.String cannot be cast to java.io.File
Вы можете использовать этап агрегатного конвейера $geoNear
для создания расстояния от запрашиваемой точки:
db.new_stores.aggregate([
{ "$geoNear": {
"near": {
"type": "Point",
"coordinates": [ -81.093699, 32.074673 ]
},
"maxDistance": 500 * 1609,
"spherical": true,
"distanceField": "distance",
"distanceMultiplier": 0.000621371
}}
]).pretty()
Это позволяет указать "distanceField"
, который будет производить другое поле в выходных документах, содержащих расстояние от запрашиваемой точки. Вы также можете использовать "distanceMultiplier"
для применения любого преобразования на выходное расстояние по мере необходимости (т. Е. Метров до миль и отмечая, что все расстояния GeoJSON возвращаются в метрах)
Существует также geoNear
] с аналогичными параметрами, но он, конечно, не возвращает курсор в качестве вывода.