play framework框架下,连接到MongoDB时的特殊操作(与或查询,模糊查询,范围查询,数据排序等)
来源:互联网 发布:苏州软件测试培训 编辑:程序博客网 时间:2024/06/06 02:23
现有班级信息表:
package models;import play.modules.mongo.MongoEntity;import play.modules.mongo.MongoModel;/** * Created by adinlead on 17/03/04. */@MongoEntity("class_msg")public class ClassMsg extends MongoModel { public Integer class; //班级号 public Integer number; //学号 public String name; //学生姓名 public Integer age; //年龄}
1.与或查询
1.1与查询(类似于SQL中的AND)
没什么说的,这是最基本的
1.2或查询(类似于SQL中的OR)
在进行或查询时,需要将条件装入查询对象(com.mongodb.BasicDBObject)或者查询列表(com.mongodb.BasicDBList)
具体如下:
查询为一班的所有同学的或者叫”杨洛”或者姓名为”林雨”的同学:
BasicDBList params = new BasicDBList();params.add(new BasicDBObject("name", "杨洛"));params.add(new BasicDBObject("name", "林雨"));List<ClassMsg> resultList = ClassMsg.find("byClassAnd$or",1,params).fetch();
2.模糊查询
在连接到Mongo进行模糊查询时,需要用到正则表达式
在这里 用java.util.regex.Pattern对象即可
具体如下:
查询杨姓同学
Pattern pattern = Pattern.compile("^杨.*$", Pattern.CASE_INSENSITIVE);List<ClassMsg> resultList = ClassMsg.find("byName",pattern).fetch();
3.范围查询
范围查询相对简单,只需要用到com.mongodb.BasicDBObject对象
具体如下:
查询一班年龄大于等于20岁的同学
/**大于使用:"$gt"大于等于使用:"$gte"小于使用:"$lt"小于等于使用:"$lte"不等于使用:"$ne"其他情况可以去MongoDB教程中查询**/// 需要先声明条件BasicDBObject param = new BasicDBObject("$gte",20)List<ClassMsg> resultList = MongoModel.find("byAge",param).fetch();
X.排序
play framework框架的排序操作是在输入完成查询条件之后,在获得数据之前进行操作的.
注意,由于官方文件没写怎么正序倒序,于是我查了一下源代码,他是这样定义的:
如果在条件前加负号(‘-‘),则按该条件倒序排列,否则默认正序
具体如下:
按照学号排序
// 倒序排列List<ClassMsg> resultList = MongoModel.find().order("by-number").fetch();// 正序排列List<ClassMsg> resultList = MongoModel.find().order("byNumber").fetch();
查询实例:
查询一班的杨姓或者年龄大于20岁的同学,并按照学号排序
BasicDBList params = new BasicDBList();Pattern pattern = Pattern.compile("^杨.*$", Pattern.CASE_INSENSITIVE);params.add(new BasicDBObject("name", pattern));params.add(new BasicDBObject("age", new BasicDBObject("$gte",20)));List<ClassMsg> resultList = ClassMsg.find("byClassAnd$or",1,params).order("byNumber").fetch();
附.
由于在实际生产环境中查询条件可能不固定,而MongoModel又不支持直接传入参数列表,故鄙人写了一了简陋的查询工具,望各位不要见笑:
为了提高一下各位的能力(其实是我懒),没写备注~
package utils;import play.modules.mongo.MongoCursor;import java.lang.reflect.Array;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * Created by adinlead on 16/11/04. */public class MongoQuery { public static MongoCursor doQuery(Class<?> clazz, String queryStr, Object[] params) { try { Object single = clazz.newInstance(); Method method = clazz.getDeclaredMethod("find", String.class, Array.newInstance(Object.class, 0).getClass()); return (MongoCursor) method.invoke(single, new Object[]{queryStr, params}); } catch (Exception e) { return null; } } public static MongoCursor doQuery(Class<?> clazz, String queryStr, List params) { return doQuery(clazz, queryStr, params.toArray()); } public static MongoCursor doQuery(Class<?> clazz, StringBuilder queryStr, List params) { return doQuery(clazz, queryStr.toString(), params.toArray()); } public static Long doCount(Class<?> clazz, String queryStr, Object[] params) { try { Object single = clazz.newInstance(); Method method = clazz.getDeclaredMethod("count", String.class, Array.newInstance(Object.class, 0).getClass()); return (Long) method.invoke(single, new Object[]{queryStr, params}); } catch (Exception e) { return null; } } public static Long doCount(Class<?> clazz, String queryStr, List params) { return doCount(clazz, queryStr, params.toArray()); } public static Long doCount(Class<?> clazz, StringBuilder queryStr, List params) { return doCount(clazz, queryStr.toString(), params.toArray()); }}
0 0
- play framework框架下,连接到MongoDB时的特殊操作(与或查询,模糊查询,范围查询,数据排序等)
- mongodb runCommand命令 范围查询 模糊查询
- MongoDB的模糊查询
- Redis中的关系查询(范围查询,模糊查询等...)
- Mongodb 查询指定时间范围的数据
- java操作mongodb模糊查询
- mongotemplate mongodb的各种操作 模糊查询 精确查询 等等
- mongotemplate mongodb的各种操作 模糊查询 精确查询 等等
- mongotemplate mongodb的各种操作 模糊查询 精确查询 等等
- mongotemplate mongodb的各种操作 模糊查询 精确查询 等等
- MVC框架与DAL的查询与模糊查询
- Play Framework Ebean 一些数据库查询操作
- 【Oracle】模糊查询与高级连接查询
- MongoDB 日期查询与mongodump 按日期范围导出数据
- Play Ebean数据库操作“或”查询
- mongodb 模糊查询
- MongoDB 模糊查询
- MongoDB 模糊查询
- 安装Docker——使用阿里云Docker加速器
- 如何脱颖而出?
- Spring框架使用内幕之AOP&AspectJ&Spring JdbcTemplate
- 数据库索引小结
- oracle服务器重启后监听启动
- play framework框架下,连接到MongoDB时的特殊操作(与或查询,模糊查询,范围查询,数据排序等)
- bindservice与使用监听器更新进度+观察者模式
- 【JZOJ4155】传送 题解
- 洛谷 P1346 电车
- 润乾报表动态显示或者增加列
- 环信SDK3.2.3和EaseUI消息列表和聊天的简单实现
- CSS实现3D轮播效果
- SQL和mySQL
- 使用FindBugs-IDEA插件找到代码中潜在的问题