問題スプリングブートと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;
}