關於 mongodb 的 內嵌關聯查詢

public Object[] searchTrans(int pageNumber,int pageSize,String godates,String wherefrom,String whereto,String transorg){
		if(godates==null)godates = "\\w*"+godates+"\\w*";
		if(wherefrom==null)wherefrom = "\\w*"+wherefrom+"\\w*";
		if(whereto==null)whereto = "\\w*"+whereto+"\\w*";
		if(transorg==null)transorg = "\\w*"+transorg+"\\w*";
		
		try {
			BuguConnection conn = BuguConnection.getInstance();  
			DB db = conn.getDB();
			DBCollection order = db.getCollection("order");
			
			BasicDBObject bdbo2 = new BasicDBObject();
			bdbo2.put("godates",Pattern.compile(godates));
			bdbo2.put("wherefrom",Pattern.compile(wherefrom));
			bdbo2.put("whereto",Pattern.compile(whereto));
			bdbo2.put("transorg",Pattern.compile(transorg));
			BasicDBObject bdbo1 = new BasicDBObject();
			bdbo1.put("$elemMatch", bdbo2);
			BasicDBObject bdbo = new BasicDBObject();
			bdbo.put("trans", bdbo1);
			
			BasicDBObject paymethod1 = new BasicDBObject();
			paymethod1.put("$gte", "0");
			BasicDBObject paymethod2 = new BasicDBObject();
			paymethod2.put("paymethod", paymethod1);
			
			int count = order.find(paymethod2,bdbo).count();
			DBCursor cur = order.find(paymethod2,bdbo).limit(pageSize).skip(pageNumber).sort(new BasicDBObject("trans.godates","-1"));
			List<Object[]> transList = new ArrayList<Object[]>();
			while (cur.hasNext()) {
				DBObject dbo = cur.next();
				if(dbo.get("trans")!=null){
					BasicDBList bson = (BasicDBList) dbo.get("trans");
					for (Object oo : bson) {
						BasicDBObject bson1 = (BasicDBObject)oo;
						transList.add(new Object[]{dbo.get("_id"),bson1});
					}
				}
			}
			return new Object[]{count,transList};
		}catch (MongoException e) {
			e.printStackTrace();
			return null;
		}
	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章