Spring boot - Как я могу агрегировать и сортировать в Spring и Mongo? - PullRequest
0 голосов
/ 15 апреля 2019

Я делаю загрузочную службу Spring, и в коллекции мне нужно найти все документы, у которых поле 'unidadNegocio' имеет значение, которое я передаю по аргументу, затем объединить все элементы с одинаковым значением в поле 'aceptado' и затем упорядочите эти документы по дате (в виде строки), которая хранится в поле «fecha_estadistica».

Пока что я падаю даже при сортировке по дате с этой попыткой в ​​моем шаблоне репозитория:

@Query("{'unidadNegocio': ?0}" +
       ".{ $sort: { 'fecha_estadistica' : 1, 'aceptado' : 1 } }")
List<ProductoComprado> findByUnidadNegocioIgnoreCaseAndOrder(String centro);

Любая помощь очень приветствуется, спасибо.

1 Ответ

0 голосов
/ 15 апреля 2019

Обновите ваш метод следующим образом:

@Query(value = "{'unidadNegocio': ?0}")
List<ProductoComprado> findByUnidadNegocioIgnoreCaseAndOrder(String centro, Sort sort);

И затем, когда вы вызываете свой репозиторий, сделайте следующее:

Sort sort = Sort.by("aceptado", "fecha_estadistica");
List<ProductoComprado> results = repository.findByUnidadNegocioIgnoreCaseAndOrder("negocio", sort);

Или вы можете просто сделать следующее:

@Query(value = "{'unidadNegocio': ?0}", sort = "{ 'aceptado' : 1, 'fecha_estadistica' : 1 }")
List<ProductoComprado> findByUnidadNegocioIgnoreCaseAndOrder(String centro);

, а затем просто вызовите метод хранилища.

Помните, что значения в спецификации сортировки должны быть именами, которые есть в поле сущности, а не в коллекции MongoDB. В этом ответе я предполагаю, что fecha_estadistica и aceptado являются именами полей в вашем классе сущностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...