使用spring boot和mongodb检索具有完整和不完整配置文件的用户数的最佳方法是什么?

时间:2017-10-15 15:58:59

标签: java spring rest spring-boot spring-mongodb

问题

1)我必须显示具有不完整和完整配置文件的总用户数。

2)不完整的配置文件是具有4个String类型字段的配置文件。 除此之外,所有都是完整的个人资料。

以下是我的模型类字段

@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)在MySql中,我可以应用类似于

的直接查询

a)从X中选择count(*),其中a为NULL或b IS NULL - > ForIncompleteProfiles

b)从X中选择count(*),其中IS NOT NULL或b IS NOT NULL - >对于CompleteProfiles

但是,

2)我可以使用findAll()方法检索用户列表中的所有用户,然后检查每个用户是否user.getA()或user.getB()任何一个字段为null.IF是,不完整配置文件的计数,否则计算Completebb配置文件。

然后,我可以将这些计数返回给HashMap中的frontEndUSer

  

任何人都可以指导我,如果这是一种正确的方式,如果不是如何以更有效的方式和有效的方式使用spring boot和MongoData Repository。

以下是我的相同代码

@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 个答案:

答案 0 :(得分:1)

您可以使用Spring Data MongoDb解决问题。看看here

我假设您使用了存储库。

int

我认为这应该有效。试试这个,否则显示在文档中并找到最佳组合。