我一直在使用Spring Data和MongoDB,并对于限制某些查询的数据量有疑问。我已经看到可以在MongoRepository
中添加自定义查询,但是我没有看到任何关于限制数据量并返回基本上是大类子集的类的示例。
例如,我有一个User
类,其中包含几个字段,但我还想创建一个UserShort
类,其中只包含User
类中的字段子集。例如,UserShort
只包含id
和firstName
/lastName
/email
字段,而不包括其他所有字段。
我已经看到可以指定/限制返回的字段,但我能否将它们返回到另一个类中呢?目前,除非我指定User
类,否则UserShort
将返回null
,但字段将限制为我指定的字段。不确定是否可能实现这一点?我意识到下面的User
类并不是很庞大,但这是我想表达的概念。
一个用户界面:
public interface Users {}
子集类:
public class UserShort implements Users {
@Id
private String id;
private String firstName;
private String lastName;
@Indexed(unique = true)
private String email;
//getters / setters
}
完整的类:
@Document
public class User implements Users {
@Id
private String id;
private String firstName;
private String lastName;
private String username;
private String password;
private Date dob;
private Status status;
@Indexed(unique = true)
private String email;
private Gender gender;
private String locale;
private Date registerDate;
@DBRef
private List<UserAddress> addresses;
public User(){
addresses = new ArrayList<UserAddress>();
}
//getters / setters
}
并且还有存储库接口:
public interface UserRepository extends MongoRepository<Users, String> {
public User findByEmail(String email);
@Query(value="{ 'email' : ?0 }", fields="{ 'firstName' : 1, 'lastName' : 1}")
public UserShort findUserShortByEmail(String email);
}