⑴ mongo-java-driver,java怎么查询MongoDB,并做时间分组统计
java操作mongodb进行查询,常用筛选条件的设置如下:
条件列表:
BasicDBListcondList=newBasicDBList();
临时条件对象:
BasicDBObjectcond=null;
DBCollectioncoll=db.getCollection("A");
1、$where
在某种应用场合,若要集合A查询文档且要满足文档中某些属性运算结果,可以编写一脚本函数用where进行设置,比如:
某集合中存放的用户信息,包括姓名、年龄、手机号、地址等,要筛选出年龄大于20且小于等于40的用户,我们可以这样:
StringageStr="function(){returnparseFloat(this.age)>20&&parseFloat(this.age)<=40};"洞厅;
cond=纳信隐newBasicDBObject();
cond.put("$where",ageStr);
放入条件列表
condList.add(cond);
2、$in
接1实例中,要查询年龄为23、40、50的用户信息,我们可以这样:
创建一个临时的条件列表对象,将条件值分别添加进去
BasicDBListvalues=newBasicDBList();
values.add(23);
values.add(40);
values.add(50);
cond=newBasicDBObject();
cond.put("age",newBasicDBObject("$in",values));
放入条件列表
condList.add(cond);
3、模糊匹配
接1实例中,要按照用户的姓名进行模糊查询,如:王,我们可以这样做:
使用不区分大小写的模糊查询
3.1完全匹配
Patternpattern=Pattern.compile("^王$",Pattern.CASE_INSENSITIVE);
3.2右匹配
Patternpattern=Pattern.compile("^.*王$",Pattern.CASE_INSENSITIVE);
3.3左匹配
Patternpattern=Pattern.compile("^王.*$",Pattern.CASE_INSENSITIVE);
3.4模糊匹配
Patternpattern=Pattern.compile("^.*王.*$",Pattern.CASE_INSENSITIVE);
cond=newBasicDBObject();
cond.put("name",cond);
放入条件列表
condList.add(cond);
4、$gte/$lte/$gt/$lt
接1实例中,要筛选出年龄大于20且小于等于40的用户,我们可以这样:
cond=newBasicDBObject();
cond.append("age",newBasicDBObject("$gt",20));
cond.append("age",newBasicDBObject("$lte",40));
放入条件列表
condList.add(cond);
在日常的查询中筛选的条件可能会有多个,而且多个条件之间都是且的关系,结合上例1、2、3、4中
将每种条件添加到条件列坦念表中,我可以这样:
BasicDBObjectsearchCond=newBasicDBObject();
searchCond.put("$and",condList);
然后查询数据:
DBCursorret=coll.find(searchCond);