【问题标题】:What is the best way to retrieve the count of users with complete and incomplete profiles using spring boot and mongodb?使用 spring boot 和 mongodb 检索具有完整和不完整配置文件的用户数量的最佳方法是什么?
【发布时间】:2018-03-27 04:32:24
【问题描述】:

问题

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

的直接查询

a)Select count(*) from X where a is NULL or b IS NULL --> ForIncompleteProfiles

b)Select count(*) from X where a IS NOT NULL or b IS NOT NULL --> 对于 CompleteProfiles

但是在这里,

2)我可以使用 findAll() 方法来检索用户列表中的所有用户,然后使用 if user.getA() 或 user.getB() 字段中的任何一个为空来检查每个用户。如果是, 计算不完整的配置文件,否则计算 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;
}

【问题讨论】:

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


    【解决方案1】:

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

    我假设您使用存储库。

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多