Near Query возвращает 0 результатов mongoDB

Я хочу добраться до мельниц согласно моему запросу. Я написал следующий код, используя mongoDB Near Query, но он возвращает 0 результатов. Я проиндексировал на 2d сфере. Метод geoContent возвращает 0 результатов.

private List<Mill> getMills(GetNearByMillsRequest getNearByMillsRequest, BasicResponse basicResponse) {
        // get farmerPosition
        LatLng fieldPosition = getNearByMillsRequest.getFieldPosition();

        double Longitude = fieldPosition.getLongitude();
        double Latitude = fieldPosition.getLatitude();

        System.out.println("Longitude : " + Longitude  + "Latitude : "+ Latitude);

        // creating GeoJson Object for farmer field location...
        GeoJsonPoint farmerFieldPosition = new GeoJsonPoint(Longitude, Latitude);
        Float distance = getNearByMillsRequest.getDistance();

        // find crop by crop Name
        Query query = new Query();
        query.addCriteria(Criteria.where(Mill.Constants.MILL_CROP_REQUIRED).elemMatch(Criteria.where(MillCropRequired.Constants.CROP).is(getNearByMillsRequest.getCrop())));        
        query.addCriteria(Criteria.where(Mill.Constants.MILL_LOCATION).near(farmerFieldPosition));

        // TODO Get radius from UserPreferences
        NearQuery nearQuery = NearQuery.near(farmerFieldPosition).maxDistance(new Distance(distance, Metrics.KILOMETERS));
        nearQuery.query(query);
        nearQuery.spherical(true);  // if using 2dsphere index, otherwise delete or set false
        nearQuery.num(10);

        GeoResults<Mill> results = millDAO.getMongoOperations().geoNear(nearQuery, Mill.class);

        System.out.println("results : " + results.getContent().size());

        if (results.getContent().isEmpty()) {
            basicResponse.setErrorCode(ErrorCode.FORBIDDEN_ERROR);
            basicResponse.setResponse("No Crop Found for this region.");
            return null;
        }

        List<GeoResult<Mill>> geoResults = results.getContent();

        //   add nearBy Mills and return this list...
        List<Mill> nearByMills = new ArrayList<>();

        for (GeoResult<Mill> result : geoResults) {
            Mill mill = result.getContent();
            nearByMills.add(mill);
        }

        return nearByMills;
    }

Результат, возвращаемый аккуратным Query, всегда пуст, поэтому в ответ он печатает NO Crop Fount.

0 ответов

Другие вопросы по тегам