문제봄 부팅과 mongodb를 사용하여 완전하고 불완전한 프로필을 가진 사용자 수를 검색하는 가장 좋은 방법은 무엇입니까?
1) 불완전한 프로필과 전체 프로필로 총 사용자 수를 표시해야합니다.
2) 불완전 프로파일은 4 개의 문자열 유형 필드를 갖는 프로파일입니다. 그 외 모든 것은 완전한 프로파일입니다. 다음은
내 모델 클래스 필드입니다 내가 쓴@Id
private String id;
private String[] imageIds;
private String concerns;
private String summary;
private String likings;
private String occupation;
private String religion;
private String education;
private String height;
@GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE)
private double[] location;
private INTERESTS[] interests;
private String fcmId;
private List connections;
private List declined;
private List pending;
코드 :
1) 내가
A)을 선택 카운트 유사한 직접 쿼리를 적용 할 수 있습니다 MySQL은 (*) X에서 a가 NULL이거나 b IS NULL -> ForIncompleteProfiles
b) X에서 count (*)를 선택하면 IS NOT NULL 또는 b NULL NOT IS -> CompleteProfiles
그러나 여기에 대해서는
2)는 사용자의 목록에있는 모든 사용자를 검색 한 후 사용하여 각 사용자를 확인하기 위해 findall은() 메소드를 사용할 수있는 경우 user.getA() 또는 user.getB() 필드 중 하나가 null.IF 예, 불완전한 프로필을 계산합니다. 그렇지 않으면 Completebb 프로필을 계산합니다. 그런 다음
, 나는이 두 수의이는 HashMap에 frontEndUSer으로 돌아갈 수 있습니다
이 올바른 방법입니다하지 않을 경우 사용하여보다 효율적인 방법 및 효과적인 방법으로 그것을 어떻게하면 사람이 나를 인도 할 수 봄 부팅 및 MongoData 저장소.
다음은 당신은 봄 데이터 MongoDB를 사용하여 문제를 해결할 수있는 동일한
@RequestMapping(value = "/showprofiles", method = RequestMethod.GET)
public Map showProfiles(HttpServletResponse response) {
int pageSize=2000;
Page<User> users=null;
int page=0;
int countInComplete=0;
int countComplete=0;
Map hm=null;
users = userService.getAllUsers(new PageRequest(page,pageSize));
do {
users = userService.getAllUsers(new PageRequest(page,pageSize));
for (User user : users) {
if (user.getName() == null || user.getGender() == null || user.getInterests() == null || user.getImageIds() == null) {
countInComplete++;
}
else{
countComplete++;
}
}
page++;
}while (users.hasNext());
hm=new HashMap();
hm.put("countComplete",countComplete);
hm.put("countInComplete",countInComplete);
return hm;
}