2017-10-15 11 views
0

문제봄 부팅과 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; 
} 

답변

1

내 코드입니다. 보십시오 here .

나는 저장소를 사용한다고 가정합니다.

@Annotation public interface UserRepository extends ... { 
    List<User> findByNameNullOrGenderNullOrInterestsNullOrImageIdsNull(); 
} 

나는 이것이 작동해야한다고 생각합니다. 다른 방법을 사용하여 문서 도구에 표시하고 최상의 조합을 찾으십시오.