Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Spring数据存储库向mongo JSON@Query添加排序_Java_Spring_Mongodb_Spring Data - Fatal编程技术网

Java 使用Spring数据存储库向mongo JSON@Query添加排序

Java 使用Spring数据存储库向mongo JSON@Query添加排序,java,spring,mongodb,spring-data,Java,Spring,Mongodb,Spring Data,我想用查找的结果进行排序,并且做了一些阅读和实验,我仍然无法让它工作。我已经拿到了,可以在findAll上使用,没有问题 存储库类 我知道我可以在常规mongoDb语法中添加一个,但无法从Java/Spring数据中解决如何实现这一点。它试图将它添加到@Query中,但不起作用,因为我认为Spring只是在执行一个。您应该能够简单地向查询方法添加一个Sort参数,从而动态地导入Sort实例,这些实例将应用于@Query中定义的查询,我很确定我已经尝试过了,但我可能错了。今天晚些时候我会再试一试,

我想用查找的结果进行排序,并且做了一些阅读和实验,我仍然无法让它工作。我已经拿到了,可以在findAll上使用,没有问题

存储库类
我知道我可以在常规mongoDb语法中添加一个,但无法从Java/Spring数据中解决如何实现这一点。它试图将它添加到@Query中,但不起作用,因为我认为Spring只是在执行一个。

您应该能够简单地向查询方法添加一个
Sort
参数,从而动态地导入
Sort
实例,这些实例将应用于
@Query

中定义的查询,我很确定我已经尝试过了,但我可能错了。今天晚些时候我会再试一试,然后再打电话给你。对不起,我刚刚抽出时间来试一试。排序作为方法的一个参数工作正常,例如
List findByThingId(String thingId,Sort Sort)
但是我不能将
排序
与带注释的自定义查询一起使用,例如
@org.springframework.data.mongodb.repository.query
。有什么想法吗?你说只要你用
@query
手动定义查询,
排序中的管道就没有效果了?如果是这样的话,请开一张JIRA罚单。错误修复了。将在今晚的快照以及即将发布的1.0 RC1版本中提供。不,请重新阅读评论。方法声明如上图所示。用
@Query(“{'name':?0}”)
注释这个方法,并将
新排序(Order.ASC,“age”)
交给该方法。
public interface ThingRepository extends PagingAndSortingRepository<Thing, ObjectId> {
    @org.springframework.data.mongodb.repository.Query("{ name:?0, $or : [ { state:'new' } , {state:'updated'} ] }")
    List<Device> findThingsInNewOrUpdatedState(String name);
}
@Service
public class ThingService() {
    @Autowired private ThingRepository thingRepository;

    public List<Thing> getSortedThings() {
        return (List<Thing>)thingRepository.findAll(new Sort(Sort.Direction.DESC, Arrays.asList("dateModified")));
    }

    public List<Thing> getNewOrUpdatedThingsSorted() {
        return thingRepository.findThingsInNewOrUpdatedState(); // <-- this needs to be sorted
    }
}
db.things.find({ name:'xxx', $or : [ { state:'new' }, {state:'updated'} ] })