Spring Data MongoDB聚合和按内部数组数据排序

问题描述

这是我第一次在Java Spring Boot中使用Mongodb,并且在排序方面遇到一些问题。

我有一个名为 Users 的集合,其中包含名为 Roles 的嵌入式文档。一个用户可以有多个角色,因此角色名称位于一个数组中。我想按用户角色名称对其进行排序,就像有人可以按名称用户进行排序一样。

用户对象如下所示,

{
  "_id": ObjectId("5bc910a39e53b62c7d4c4e62"),"_class": "User","userName": "rosa","fullName": "rosa","roles": [
    DBRef("roles",ObjectId("5d5cf8ceb3773255b54d18c6")),DBRef("roles",ObjectId("5d5cf8ceb3773255b54d18c7"))
  ]
}

文档

@Document(collection = "users")
public class User {

    @Id
    private String id;
    private String username;
    private String fullName;
    private boolean active;
    @DBRef
    private List<Role> roles;
  //constructor,getter,setter
}


@Document(collection = "roles")
public class Role {
    @Id
    private String id;
    private String name;

//constructor,setter

}

我尝试了不同的方法来整日完成这项工作,但到目前为止,没有任何工作。这是最新的尝试,

    Criteria criteria = new Criteria();
    setCriteriaToSearchActiveUsers(criteria);
    
    Aggregationoperation unwind = Aggregation.unwind("roles");
    Aggregationoperation match = Aggregation.match(criteria);
    Aggregationoperation sort = Aggregation.sort(Sort.Direction.ASC,"roles.name");

    Aggregation aggregation = Aggregation.newAggregation(unwind,match,sort);

    AggregationResults<User> groupResults = mongoOperations.aggregate(aggregation,User.class,User.class);

错误无法实例化[java.util.List]:指定的类是接口。

由于它是多个角色(一个数组),我该如何实现?我没有头绪。预先感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)