⑴ 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);