我目前的设置如下:我有SpringData Mongo存储库和以下类结构:
User.class:
public class User {
private String firstName;
private String lastName;
@Id
private String id;
@DBRef
private List<Division> divisions;
[...]
}
和Division.class
public class Division {
@Id
private String id;
[...]
}
我现在想要收集属于某个部门的所有用户。如何使用SpringData Mongo存储库完成此操作?
为了澄清,程序性(但非常低效)的方法将是
List<User> matchingUser = new ArrayList<>();
List<User> users = userRepository.findAll()
for(User user: users) {
if(user.divisions.contains(matchingDivision)) {
matchingUser.add(user);
}
}
我已经尝试了以下内容,但没有运气:
@Repository
public interface UserRepository extends MongoRepository<User, String> {
@Query(value = "{'divisions': {$elemMatch: ?0 } }")
public List<User> findAllByDivisionInDivisions(Division division);
}
我的完整项目可以找到here,但如果您需要任何具体信息,请告诉我,我会提供。
答案 0 :(得分:0)
根据id而不是整个部门进行搜索,因为它是DBRef。否则,您必须解析每个DBRef,这是从数据库中额外提取的。
Sublime Text 2 (2.0.2)