java操作mongodb進行查詢,常用篩選條件的設置如下:
條件列表:
BasicDBList condList = new BasicDBList();
臨時條件對象:
BasicDBObject cond = null;
DBCollection coll = db.getCollection("A");
1、$where
在某種應用場合,若要集合A查詢文檔且要滿足文檔中某些屬性運算結果,可以編寫一腳本函數用where進行設置,比如:
某集合中存放的用戶信息,包括姓名、年齡、手機號、地址等,要篩選出年齡大於20且小於等於40的用戶,我們可以這樣:
String ageStr = "function (){return parseFloat(this.age) > 20 && parseFloat(this.age) <= 40};";
cond = new BasicDBObject();
cond.put("$where",ageStr);
放入條件列表
condList.add(cond);
2、$in
接1實例中,要查詢年齡爲23、40、50的用戶信息,我們可以這樣:
創建一個臨時的條件列表對象,將條件值分別添加進去
BasicDBList values = new BasicDBList();
values.add(23);
values.add(40);
values.add(50);
cond = new BasicDBObject();
cond.put("age",new BasicDBObject("$in",values));
放入條件列表
condList.add(cond);
3、模糊匹配
接1實例中,要按照用戶的姓名進行模糊查詢,如:王,我們可以這樣做:
使用不區分大小寫的模糊查詢
3.1完全匹配
Pattern pattern = Pattern.compile("^王$", Pattern.CASE_INSENSITIVE);
3.2右匹配
Pattern pattern = Pattern.compile("^.*王$", Pattern.CASE_INSENSITIVE);
3.3左匹配
Pattern pattern = Pattern.compile("^王.*$", Pattern.CASE_INSENSITIVE);
3.4模糊匹配
Pattern pattern = Pattern.compile("^.*王.*$", Pattern.CASE_INSENSITIVE);
cond = new BasicDBObject();
cond.put("name",cond);
放入條件列表
condList.add(cond);
4、$gte/$lte/$gt/$lt
接1實例中,要篩選出年齡大於20且小於等於40的用戶,我們可以這樣:
cond = new BasicDBObject();
cond.append("age",new BasicDBObject("$gt",20));
cond.append("age",new BasicDBObject("$lte",40));
放入條件列表
condList.add(cond);
在日常的查詢中篩選的條件可能會有多個,而且多個條件之間都是且的關係,結合上例1、2、3、4中
將每種條件添加到條件列表中,我可以這樣:
BasicDBObject searchCond = new BasicDBObject();
searchCond.put("$and", condList);
然後查詢數據:
DBCursor ret = coll.find(searchCond);
以上爲常用的篩選條件的設置方法,其他的後續在更新。