mongodb查询find

因为公司雪球最近研究了下mongodb的查询,但是因为对于这里面只进行了语法的使用,当初没有进行内部数据的查看导致出现一些问题,所以大家在看一门新的知识的时候不要只注重语言本身也要注意内部的结构,,还有看到的东西要立马去实践不要一直盯着看,那样会浪费时间,自己也掌握不了多少知识。

现在开始说下mongodb查询的问题 用的是java语言。

mongodb的一般都是find方法查询,因为查询要用到很多个查询条件组合,并且是精确查询。就把查询条件组合好之后放到list当中然后用and组合一起放到find当中查询。

/**
 *   searchCond 试讲在condList中的条件并列好之后放到find中
 */
 BasicDBObject searchCond = new BasicDBObject();
		 BasicDBList condList = new BasicDBList();
		 BasicDBObject cond;
		 DBCollection Conllection;
                condList= linkPayReturnContent(map);
		 if(condList.size()>0){
				searchCond.put("$and", condList);
		 }
                 /**
                  *去掉查询出来的主键id
                  */
		 BasicDBObject  idDB=new BasicDBObject();
		 idDB.put("_id", 0);
		  
		   Conllection=mongoBgTemp.queryDB(“指定查询的表名”);
			DBCursor db=Conllection.find(searchCond,idDB);
			db.addOption(Bytes.QUERYOPTION_NOTIMEOUT);
			while(db.hasNext()){
				resultMap=new HashMap();
			    DBObject dbObj= db.next();
			    list.add(dbObj.toMap());
			}
			db.close();
		 return list;

  public DBCollection queryDB(String collectionName){
    	DBCollection userCollection = mongoTemplate.getCollection(collectionName);
    	return userCollection;
    }
/***
 *因为有的查询条件不是在一个方法当中我就在这里全部组合在一起方便自己去查询使用以后
 */
BasicDBList condList = new BasicDBList();
		/**交易时间*/
		if(map.containsKey("addTimeStart")){
			BasicDBObject addTimeStartDB=new BasicDBObject();
			String addTimeStart=StringUtils.trimToEmpty(map.get("addTimeStart").toString());
			if(addTimeStart !=null && !addTimeStart.equals("")){
				addTimeStartDB.put("transtime",new BasicDBObject("$gte",addTimeStart));
				condList.add(addTimeStartDB);
			}
		}
		if(map.containsKey("addTimeEnd")){
			BasicDBObject addTimeEndDB=new BasicDBObject();
			String addTimeEnd=StringUtils.trimToEmpty(map.get("addTimeEnd").toString());
			if(addTimeEnd !=null && !addTimeEnd.equals("")){
				addTimeEndDB.put("transtime",new BasicDBObject("$lte",addTimeEnd));
				condList.add(addTimeEndDB);
			}
		}
		if(map.containsKey("orderNo")){
			BasicDBObject orderNoDB=new BasicDBObject();
			String orderNo=StringUtils.trimToEmpty(map.get("orderNo").toString());
			if(orderNo !=null && !orderNo.equals("")){
				orderNoDB.put("order_no", orderNo);
				condList.add(orderNoDB);
			}
		}
		if(map.containsKey("cardNo")){
			BasicDBObject cardNoDB=new BasicDBObject();
			String cardNo=StringUtils.trimToEmpty(map.get("cardNo").toString());
			if(cardNo !=null && !cardNo.equals("")){
				cardNoDB.put("card_no", cardNo);
				condList.add(cardNoDB);
			}
		}
		if(map.containsKey("phone")){
			BasicDBObject phoneDB=new BasicDBObject();
			String phone=StringUtils.trimToEmpty(map.get("phone").toString());
			if(phone !=null && !phone.equals("")){
				phoneDB.put("phone", phone);
				condList.add(phoneDB);
			}
		}
		if(map.containsKey("totalFee")){
			BasicDBObject totalFeeDB=new BasicDBObject();
			String totalFee=StringUtils.trimToEmpty(map.get("totalFee").toString());
			if(totalFee !=null && !totalFee.equals("")){
				totalFeeDB.put("total_fee", totalFee);
				condList.add(totalFeeDB);
			}
		}
		if(map.containsKey("totalFee")){
			BasicDBObject totalFeeDB=new BasicDBObject();
			String totalFee=StringUtils.trimToEmpty(map.get("totalFee").toString());
			if(totalFee !=null && !totalFee.equals("")){
				totalFeeDB.put("total_fee", totalFee);
				condList.add(totalFeeDB);
			}
		}
		if(map.containsKey("memberId")){
			BasicDBObject memberIdDB=new BasicDBObject();
			String memberId=StringUtils.trimToEmpty(map.get("memberId").toString());
			if(memberId !=null && !memberId.equals("")){
				memberIdDB.put("member_id", memberId);
				condList.add(memberIdDB);
			}
		}
if(map.containsKey("content")){
                        //这个是利用的模糊查询现在那个用的是正则表达式
			BasicDBObject  contentDB=new BasicDBObject();
			String content=StringUtils.trimToEmpty(map.get("content").toString());
			if(content !=null && !content.equals("")){
				Pattern queryPattern = Pattern.compile(content, Pattern.CASE_INSENSITIVE);
				contentDB.put("content",queryPattern );
				condList.add(contentDB);
			}
		}
if(map.containsKey("borrowMoney")){
	//在这里也是提醒下自己在查询的时候要注意内容的区分,并且注意字段类型	
	BasicDBObject borrowMoneyDB=new BasicDBObject();
			String borrowMoney=StringUtils.trimToEmpty(map.get("borrowMoney").toString());
			if(borrowMoney !=null && !borrowMoney.equals("")){
				borrowMoneyDB.put("applyamt",ObjectUtils.toString(new BigDecimal (borrowMoney).setScale(2,BigDecimal.ROUND_DOWN)));
				condList.add(borrowMoneyDB);
			}
		}
		return condList;
	}

猜你喜欢

转载自fengruiqi.iteye.com/blog/2356723