如何解决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 举报,一经查实,本站将立刻删除。