我正在制作一个Spring引导服务,在一个集合中我必须找到所有文件,其字段'unidadNegocio'具有我通过参数传递的值,然后在字段'aceptado'中对所有具有相同值的元素进行破坏,然后对它们进行排序按日期(作为字符串)存储在字段'fecha_estadistica'中的文档。
到目前为止,我甚至在使用我的存储库模板中的这个尝试的日期对它们进行排序时:
@Query("{'unidadNegocio': ?0}" +
".{ $sort: { 'fecha_estadistica' : 1, 'aceptado' : 1 } }")
List<ProductoComprado> findByUnidadNegocioIgnoreCaseAndOrder(String centro);
非常欢迎任何帮助,谢谢。
更新您的方法,如下所示:
@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
是您的Entity类中的字段名称。