0

我正在尝试按特定字段(userId)获取不同项目的列表。目前我正在使用这种方法从 MongoDB 获取记录ReactiveCrudRepository。此外,我希望进一步过滤此结果并仅获取不同的项目。

这个怎么做?

@Query(value = "{$and :[{'submitTime':{$ne:null}}, {'gameId': :#{#gameId}} ]}", sort = "{'score': -1, 'timeTaken': 1, 'submitTime': 1}")
Flux<Play> getWinners(@Param("gameId") String gameId, Pageable pageable); 

我的Play对象是这样的:

@Document(value = "play")
@Builder
public class Play {
    @Id
    private String id;
    private String gameId;
    private int score;
    private String userId;
    private LocalDateTime submitTime;
    private long timeTaken;
}
4

1 回答 1

0

目前 @Query 注释不提供执行不同命令的可能性。作为一种解决方法,您可以

  • 使用查找、排序和不同的操作实现自定义方法
  • 在调用 repo 方法 getWinners() 后使用.distinct()运算符通过键选择器区分项目,但在这种情况下,此操作将不会在 MongoDB 中执行
于 2021-12-02T15:51:12.570 回答