问题描述
这是我第一次在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 (将#修改为@)