Java MongoDB查询(BasicDBObject和BasicDBList)

本人在开发过程中,遇到了一些查询MongoDB的业务需求,然后总结了一些 Java MongoDB 查询操作。

$in  $lte  sort 排序等用法,测试有效。


参数封装成实体,然后查询,之后封装为分页的结果。

利用 BasicDBObject 和 BasicDBList 即可完成 所有的基本查询操作。  包括$in $and $or $gte 等。

@Override
public Page searchByPage(AccidentSearchInRequest accidentSearchInRequest) {
    String province = accidentSearchInRequest.getProvince();
    DateParam dateParam = accidentSearchInRequest.getDateParam();
    String startDate = dateParam.getStartDate();
    String endDate = dateParam.getEndDate();
    String[] sgjb = accidentSearchInRequest.getSgjb();
    String[] atype = accidentSearchInRequest.getAtype();
    String order = accidentSearchInRequest.getPage().getOrders().get(0).getOrderBy();
    com.topcom.cms.common.page.PageRequest pageRequest = accidentSearchInRequest.getPage();
    Integer page = pageRequest.getPage();
    Integer limit = pageRequest.getLimit();


    BasicDBObject query=new BasicDBObject();//mongodb查询
    if (StringUtils.isNotBlank(province)){
        query.put("province",province);
    }
    if (sgjb.length>0){
        BasicDBList values = new BasicDBList();
        for (int i=0;i0){
        BasicDBList values = new BasicDBList();
        for (int i=0;i queryList = collection.find(query).sort(orderBy).toArray();

    //获取pageable的参数的页码,从1开始
    int pageNo = page;
    //获取pageable的页显示大小
    int pageSize = limit;

    int fromIndex = pageSize * (pageNo - 1);
    int toIndex = pageSize * pageNo;

    if (toIndex > queryList.size()) {
        toIndex = queryList.size();
    }
    if (fromIndex > toIndex) {
        fromIndex = toIndex;
    }
    //获取list的分页集合
    List result = queryList.subList(fromIndex, toIndex);
    //创建page对象,并且可以排序
    Page pageResult = new PageImpl(result, new PageRequest(pageNo - 1, pageSize), queryList.size());

    return pageResult;
}

测试: 

传入参数:

{
  "atype": [
    "煤矿"
  ],
  "dateParam": {
    "endDate": "2018-01-01",  
    "startDate": "2011-01-01"
  },
  "page": {
    "limit": 5,
    "orders": [
      {
        "direction": "ASC",
        "orderBy": "deathnumber"
      }
    ],
    "page": 1
  },
  "province": "山东",
  "sgjb": [
    "一般事故","较大事故","重大事故"
  ]
}

结果: 成功!



你可能感兴趣的:(MongoDB)