@RequestMapping("/getExcelData.go")
@ResponseBody
public ExcelViewBean getRedisData(ExcelViewBean excelViewBean) {
// randomKey
String randomKey = "123456";
// 行号
Integer colNum = excelViewBean.getColNum();
// 行号的值 value
String colValue = excelViewBean.getColValue();
// 条件集合,把多个and/or条件关联到一起
BasicDBList condList = new BasicDBList();
// 搜索条件 and或者or
BasicDBObject searchCond = new BasicDBObject();
// 条件1 randomKey
BasicDBObject query1 = new BasicDBObject();
query1.put("randomKey", randomKey);
condList.add(query1);
// 条件2 模糊查询 value like pattern start
Pattern pattern = Pattern.compile("^.*" + colValue + ".*$", Pattern.CASE_INSENSITIVE);
// 存放两个条件的 querySub
BasicDBObject querySub = new BasicDBObject();
querySub.put("value", pattern);
querySub.put("colnum", colNum);
// 条件2的组装,查询col 下的 colnum和value ,数据结果如下所示:
BasicDBObject query2 = new BasicDBObject("col",new BasicDBObject("$elemMatch", querySub));
condList.add(query2);
// 两个条件 and 链接
searchCond.put("$and", condList);
// 条件2 模糊查询 value like pattern end
System.out.println("新建数据时候,模糊查询的条件3:" + searchCond);
// 查询到的结果集,遍历结果集,可对数据操作
findIterable = collection.find(searchCond).skip(pageStart).limit(5);
Integer allRowNum = (int) collection.count(searchCond);
System.out.println("查询的条件3总记录数:" + allRowNum);
excelBean.setAllRowNum(allRowNum);
***************说明:生成的mongodb下shell查询条件如下
{ "$and" : [ { "randomKey" : "1_1533626469_test.xlsx"} , { "col" : { "$elemMatch" : { "value" : { "$regex" : "^.*3.*$" , "$options" : "i"} , "colnum" : 2}}}]}
// 条件2 的另一个写法 start --------------------------------!!!不对,不要用了
Pattern pattern = Pattern.compile("^.*" + colValue + ".*$", Pattern.CASE_INSENSITIVE);
condList.add(new BasicDBObject("col", new BasicDBObject("$elemMatch",new BasicDBObject("value", pattern))));
condList.add(new BasicDBObject("col", new BasicDBObject("$elemMatch",new BasicDBObject("colnum", colNum))));
searchCond.put("$and", condList);
// 条件2 的另一个写法 end
}