2017-10-15 4 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で(*)from X where a NULLまたはb IS NULL - > ForIncompleteProfiles

b)Xからaを選択すると、NOT NULLまたはb NULLではありません - > CompleteProfiles

しかし、ここでは、のために

2)私は、ユーザーの一覧ですべてのユーザーを取得し、使用してユーザーごとにチェックするためのfindAll()メソッドを使用できるかどうuser.getA()またはuser.getB()フィールドのいずれかがnull.IFはい、不完全なプロファイルのためにカウントするか、完全なプロファイルのためにカウントする。その後

、私は両方のこれらのカウントのは、HashMapのでfrontEndUSerに戻ることができ

これは正しい方法で、そうでない場合は使用して、より効率的な方法で効果的な方法でそれを行う方法ならば誰も私を導くことができますスプリングブートとMongoDataリポジトリ。以下は

同じ

@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

のための私のコードは、あなたが春データのMongoDBを使用して問題を解決することができます。見てくださいhere

私はあなたがリポジトリを使用していると仮定しています。

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

これはうまくいくと思います。これを試してみると、それ以外の場合はドキュメントに表示され、最適な組み合わせが見つかります。

関連する問題