MongoDB, SpringData, findByPositionNear дополнительные параметры

#mongodb #spring-data

#mongodb #весна-данные

Вопрос:

Привет, следите за реализацией:

 public class Store {
   private double[] position;
   private String category;
}
 

И этот метод для поисковых хранилищ приближается

 public List<Store> fundByLatLong(double latitude, double longitude, Double km) {

mongoTemplate.indexOps(Store.class).ensureIndex(new GeospatialIndex("position"));

    Point point= new Point(latitude, longitude);

    List<Store> stores= this.storeRepository.findByPositionNear(ponto , new Distance(km, Metrics.KILOMETERS));

    return stores;
}
 

Но мне нужен поиск по позиции и категории. Как я могу добавить категорию параметров для поиска?

Ответ №1:

Это то, что вы ищете?

 interface StoreRepository extends Repository<Store, Long> {

  List<Store> findByCategoryAndPositionNear(String category, 
                                            Point point, Distance distance);
}
 

Подробнее об этом в справочной документации.

Комментарии:

1. Да, но этот интерфейс не является встроенным в SpringData собственный интерфейс SpringData — findByPositionNear(точка p, расстояние d) SpringData реализует этот интерфейс во время выполнения. Как я могу указать SpringData для реализации интерфейса, который мне нужен?

2. Что вы подразумеваете под «не родной»? Определение интерфейса, показанное выше, просто работает из коробки. Вы не можете указать Spring Data для реализации произвольного интерфейса. Ваш интерфейс должен соответствовать функциям, поддерживаемым Spring Data, или самостоятельно реализовывать части репозитория. Все это задокументировано в справочной документации .