List of usage examples for com.mongodb AggregationOutput results
List results
To view the source code for com.mongodb AggregationOutput results.
Click Source Link
From source file:HW4.java
@SuppressWarnings("empty-statement") private void executeQueryButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_executeQueryButtonActionPerformed DefaultTableModel dtm = new DefaultTableModel(0, 0); //nothing is selected if (finalCat.isEmpty()) { if (!Address.isEmpty() && !proximity.isEmpty()) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; }/*from w w w . j a v a 2 s . c o m*/ if (Address.equalsIgnoreCase("6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } DB dbBusiness = mongoClient.getDB("business"); DBCollection collBusiness = dbBusiness.getCollection("business"); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); resultTable.setModel(dtm); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars" }; dtm.setColumnIdentifiers(header); DBCursor cursorForBusiness = collBusiness.find(query); while (cursorForBusiness.hasNext()) { //pointInterest.add(cursorForBusiness.next()); Object[] row = new Object[5]; row[0] = cursorForBusiness.next().get("business_id"); row[1] = cursorForBusiness.next().get("name"); row[2] = cursorForBusiness.next().get("city"); row[3] = cursorForBusiness.next().get("state"); row[4] = cursorForBusiness.next().get("stars"); dtm.addRow(row); } } if (!memberSince.isEmpty() || !operReviewCount.isEmpty() || !operNoOfFriends.isEmpty() || !operAvgStar.isEmpty() || !valueReviewCount.isEmpty() || !valueNoOfFriends.isEmpty() || !valueAvgStar.isEmpty() || !andOrAttribute.isEmpty() || !operNoOfVotes.isEmpty() || !valueNoOfVotes.isEmpty()) { DB dbUser = mongoClient.getDB("user"); DBCollection collUser = dbUser.getCollection("user"); BasicDBObject andQuery = new BasicDBObject(); List<BasicDBObject> obj = new ArrayList<BasicDBObject>(); try { if (!memberSince.isEmpty()) { obj.add(new BasicDBObject("yelping_since", memberSince)); } if (!valueReviewCount.isEmpty()) { int vrc = Integer.parseInt(valueReviewCount); BasicDBObject rCount = null; if (operReviewCount.equals(">")) { rCount = new BasicDBObject("review_count", new BasicDBObject("$gt", vrc)); //rCount = new BasicDBObject("$where", "review_count >" + vrc); } if (operReviewCount.equals("<")) { rCount = new BasicDBObject("review_count", new BasicDBObject("$lt", vrc)); //rCount = new BasicDBObject("$where", "review_count <" + vrc); } if (operReviewCount.equals("=")) { rCount = new BasicDBObject("review_count", vrc); // rCount = new BasicDBObject("$where", "review_count =" + vrc); } obj.add(new BasicDBObject(rCount)); } if (!valueNoOfFriends.isEmpty()) { int vnf = Integer.parseInt(valueNoOfFriends); BasicDBObject vFriends = null; if (operNoOfFriends.equals(">")) { vFriends = new BasicDBObject("$where", "this.friends.length >" + vnf); } if (operNoOfFriends.equals("<")) { vFriends = new BasicDBObject("$where", "this.friends.length <" + vnf); } if (operNoOfFriends.equals("=")) { vFriends = new BasicDBObject("$where", "this.friends.length =" + vnf); } obj.add(new BasicDBObject(vFriends)); } if (!valueAvgStar.isEmpty()) { Double doubleValueAvgStar = Double.parseDouble(valueAvgStar); BasicDBObject avgStarValue = null; if (operAvgStar.equals(">")) { avgStarValue = new BasicDBObject("average_stars", new BasicDBObject("$gt", doubleValueAvgStar)); // avgStarValue = new BasicDBObject("$where", "average_stars >" + doubleValueAvgStar); } if (operAvgStar.equals("<")) { avgStarValue = new BasicDBObject("average_stars", new BasicDBObject("$lt", doubleValueAvgStar)); // avgStarValue = new BasicDBObject("$where", "average_stars <" + doubleValueAvgStar); } if (operAvgStar.equals("=")) { avgStarValue = new BasicDBObject("average_stars", doubleValueAvgStar); // avgStarValue = new BasicDBObject("$where", "average_stars =" + doubleValueAvgStar); } obj.add(new BasicDBObject(avgStarValue)); } if (!valueNoOfVotes.isEmpty()) { // BasicDBObject noOfVotesValue = null; // if (operNoOfVotes.equals(">")) { // noOfVotesValue = new BasicDBObject("average_stars", new BasicDBObject("$gt", valueNoOfVotes)); // } // if (operNoOfVotes.equals("<")) { // noOfVotesValue = new BasicDBObject("average_stars", new BasicDBObject("$lt", valueNoOfVotes)); // } // if (operNoOfVotes.equals("=")) { // noOfVotesValue = new BasicDBObject("average_stars", new BasicDBObject("$eq", valueNoOfVotes)); // } // // obj.add(new BasicDBObject(noOfVotesValue)); } System.out.println(andOrAttribute); if (andOrAttribute.equalsIgnoreCase("AND")) { System.out.println("Here"); andQuery.put("$and", obj); } else { andQuery.put("$or", obj); } queryLabel.setText("<html><p>" + andQuery.toString() + "</p></html>"); List<DBObject> outputMyList = new ArrayList<DBObject>(); DBCursor cursor = collUser.find(andQuery); while (cursor.hasNext()) { //System.out.println(cursor.next()); outputMyList.add(cursor.next()); } resultTable.setModel(dtm); String header[] = new String[] { "U_ID", "User Name", "Yelping Since", "Avg Stars", "Review Count" }; // add header in table model dtm.setColumnIdentifiers(header); for (DBObject temp : outputMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[5]; row[0] = temp.get("user_id"); row[1] = temp.get("name"); row[2] = temp.get("yelping_since"); row[3] = temp.get("average_stars"); row[4] = temp.get("review_count"); dtm.addRow(row); } } catch (Exception e) { } } else { queryLabel.setText("Please select atleast one category from business"); } } //only cat selected //////////////////////////Business////////////////////////////////////////////////////////// if (finalCat.size() > 0) { DB dbBusiness = mongoClient.getDB("business"); DBCollection collBusiness = dbBusiness.getCollection("business"); if (!fromCheckin.isEmpty() && !fromCheckinHour.isEmpty() && !toCheckin.isEmpty() && !toCheckinHour.isEmpty() && !operationCheckin.isEmpty() && !valueCheckin.isEmpty()) { DB dbCheckin = mongoClient.getDB("checkin"); DBCollection collCheckin = dbCheckin.getCollection("checkin"); if (!fromReview.isEmpty() && !toReview.isEmpty() && !operationStar.isEmpty() && !valueStar.isEmpty() && !operationVote.isEmpty() && !valueVote.isEmpty()) { //////////////////////Category, Checkin and Review/////////////////////////////////////////////////// DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); String fromDate1 = fromReview; String fromdate = fromDate1 + "T00:00:00Z"; String toDate1 = toReview; String todate = toDate1 + "T00:00:00Z"; int starValue = Integer.parseInt(valueStar); int voteValue = Integer.parseInt(valueVote); StringBuffer finalQuery = new StringBuffer(); DB dbReview = mongoClient.getDB("review"); DBCollection collReview = dbReview.getCollection("review"); int j = 0; int l = 0; HashMap<String, Integer> tempCheckin = new HashMap<String, Integer>(); ArrayList<String> finalCheckinBid = new ArrayList<String>(); ArrayList<CheckinDetail> checkinList = new ArrayList<CheckinDetail>(); //System.out.println("I am in checkin box"); String[] arrayDays = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; for (int i = 0; i < arrayDays.length; i++) { if (fromCheckin == arrayDays[i]) { j = i; } else if (toCheckin == arrayDays[i]) { l = i; } } ArrayList<Integer> days = new ArrayList<Integer>(); days.add(j); int temfromday = j; days.add(l); int difference = CheckForDay(fromCheckin, toCheckin); if (difference > 0) { for (int k = 0; k < difference; k++) { j = j + 1; if (j == 7) { j = 0; } days.add(j); } } List<DBObject> categoryIdList = new ArrayList<DBObject>(); for (String t : finalCat) { BasicDBObject whereQueryBusiness = new BasicDBObject(); BasicDBObject fieldsBusiness = new BasicDBObject(); fieldsBusiness.put("business_id", 1); whereQueryBusiness.put("categories", t); DBCursor cursorForBusiness = collBusiness.find(whereQueryBusiness, fieldsBusiness); finalQuery.append(whereQueryBusiness); while (cursorForBusiness.hasNext()) { int i = 1; categoryIdList.add(cursorForBusiness.next()); i++; } } //for FINALCAT List<DBObject> checkinCategoryIdList = new ArrayList<DBObject>(); for (DBObject s : categoryIdList) { //System.out.println(s.get("business_id")); BasicDBObject whereQueryCheckin = new BasicDBObject(); whereQueryCheckin.put("business_id", s.get("business_id")); DBCursor cursorForCheckin = collCheckin.find(whereQueryCheckin); while (cursorForCheckin.hasNext()) { int i = 1; checkinCategoryIdList.add(cursorForCheckin.next()); i++; } } //for DBObject s:categoryIdList for (DBObject u : checkinCategoryIdList) { String full = u.get("checkin_info").toString(); String a = full.replaceAll("[{}]", ""); String[] b = a.split(","); for (int x = 0; x < b.length; x++) { CheckinDetail objCheckin = new CheckinDetail(); String[] c = b[x].split(":"); String d = c[0].replaceAll("[\"]", ""); String[] e = d.split("-"); objCheckin.b_Id = u.get("business_id").toString(); objCheckin.fromTime = Integer.parseInt(e[0].replaceAll("\\s+", "")); objCheckin.checkinDay = Integer.parseInt(e[1].replaceAll("\\s+", "")); objCheckin.CountValue = Integer.parseInt(c[1].replaceAll("\\s+", "")); ; checkinList.add(objCheckin); } } for (CheckinDetail e : checkinList) { for (int f : days) { if ((f == temfromday && temfromday == e.checkinDay && Integer.parseInt(fromCheckinHour) <= e.fromTime) || (f == l && l == e.checkinDay && Integer.parseInt(toCheckinHour) >= e.fromTime) || (f == e.checkinDay && f != temfromday && f != l)) { // System.out.println(e.b_Id); // System.out.println(e.CountValue); if (tempCheckin.containsKey(e.b_Id)) { tempCheckin.put(e.b_Id, tempCheckin.get(e.b_Id) + e.CountValue); } else { tempCheckin.put(e.b_Id, e.CountValue); } } } } Iterator itr = tempCheckin.entrySet().iterator(); while (itr.hasNext()) { Map.Entry entry = (Map.Entry) itr.next(); if ((operationCheckin.contains("="))) { if (entry.getValue() == valueCheckin) { finalCheckinBid.add(entry.getKey().toString()); } } if ((operationCheckin.contains("<"))) { if (Integer.parseInt(entry.getValue().toString()) < Integer.parseInt(valueCheckin)) { finalCheckinBid.add(entry.getKey().toString()); //System.out.println("in <"); } } if ((operationCheckin.contains(">"))) { if (Integer.parseInt(entry.getValue().toString()) > Integer.parseInt(valueCheckin)) { finalCheckinBid.add(entry.getKey().toString()); //System.out.println("in >"); } } } //abhi tak ki bid is in finalCheckinBid // for(String a :finalCheckinBid){ // System.out.println(a); // } finalQuery.append( "Stage{name='$match', value=Or Filter{filters=[Operator Filter{fieldName='checkin_info.2-3', operator='$exists', value=BsonBoolean{value=true}}, Operator Filter{fieldName='checkin_info.2-4', operator='$exists', value=BsonBoolean{value=true}}]}}\n" + "Document{{$group=Document{{_id=$business_id, total1=Document{{$sum=$checkin_info.2-4}}, total2=Document{{$sum=$checkin_info.2-3}}}}}}\n" + "Stage{name='$match', value=Operator Filter{fieldName='totalCheckins', operator='$gt', value=4}}"); try { List<Object> reviewCategoryIdList = new ArrayList<Object>(); DBObject match = new BasicDBObject("$match", new BasicDBObject("date", new BasicDBObject("$gt", format.parse(fromdate)) .append("$lt", format.parse(todate)))); DBObject groupFields = new BasicDBObject("_id", "$business_id"); groupFields.put("total1", new BasicDBObject("$sum", "$votes.funny")); groupFields.put("total2", new BasicDBObject("$sum", "$votes.useful")); groupFields.put("total3", new BasicDBObject("$sum", "$votes.cool")); groupFields.put("totalStars", new BasicDBObject("$sum", "$stars")); DBObject group = new BasicDBObject("$group", groupFields); DBObject fields = new BasicDBObject("_id", 1); BasicDBList addFields = new BasicDBList(); addFields.add("$total1"); addFields.add("$total2"); addFields.add("$total3"); fields.put("totalVotes", new BasicDBObject("$sum", addFields)); fields.put("totalStars", 1); DBObject project = new BasicDBObject("$project", fields); BasicDBObject votes = null; BasicDBObject stars = null; if (operationStar.equals(">")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$gt", starValue)); } if (operationStar.equals("<")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$lt", starValue)); } if (operationStar.equals("=")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$eq", starValue)); } if (operationVote.equals(">")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$gt", voteValue)); } if (operationVote.equals("<")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$lt", voteValue)); } if (operationVote.equals("=")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$eq", voteValue)); } List<BasicDBObject> list1 = new ArrayList<BasicDBObject>(); list1.add(new BasicDBObject(votes)); list1.add(new BasicDBObject(stars)); DBObject votesnStars = new BasicDBObject("$and", list1); DBObject match2 = new BasicDBObject("$match", votesnStars); AggregationOutput cursorForReview = collReview.aggregate(match, group, project, match2); String query33 = match + "\n" + group + "\n" + project + "\n" + match2; finalQuery.append(query33); Iterable<DBObject> list = cursorForReview.results(); Iterator<DBObject> resultSet1 = list.iterator(); while (resultSet1.hasNext()) { // System.out.println(resultSet1.next().get("_id")); reviewCategoryIdList.add(resultSet1.next().get("_id")); } // System.out.println(reviewCategoryIdList.size()); // System.out.println(finalCheckinBid.size()); reviewCategoryIdList.retainAll(finalCheckinBid); // System.out.println(reviewCategoryIdList.size()); // for (Object s : reviewCategoryIdList) { // System.out.println(s.toString()); // } if (!Address.isEmpty() && !proximity.isEmpty()) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; } if (Address.equalsIgnoreCase( "6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } List<String> pointInterest = new ArrayList<String>(); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); DBCursor cursorForBusiness = collBusiness.find(query); finalQuery.append(query); while (cursorForBusiness.hasNext()) { pointInterest.add(cursorForBusiness.next().get("business_id").toString()); } // System.out.println(pointInterest.size()); // System.out.println(reviewCategoryIdList.size()); reviewCategoryIdList.retainAll(pointInterest); // System.out.println(reviewCategoryIdList.size()); } List<DBObject> outputMyList = new ArrayList<DBObject>(); BasicDBObject whereQuery = new BasicDBObject(); for (Object fianlBid2 : reviewCategoryIdList) { // System.out.println(fianlBid2); whereQuery.put("business_id", fianlBid2.toString()); DBCursor cursor = collBusiness.find(whereQuery); while (cursor.hasNext()) { //System.out.println(cursor.next()); outputMyList.add(cursor.next()); } } queryLabel.setText("<html><p>" + finalQuery + "</p></html>"); resultTable.setModel(dtm); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars" }; // add header in table model dtm.setColumnIdentifiers(header); for (DBObject temp : outputMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[5]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); dtm.addRow(row); } } catch (Exception e) { } } //review if ///////////////////////////////Category and Checkin/////////////////////////////// else {//Check in with cat not review int j = 0; int l = 0; HashMap<String, Integer> tempCheckin = new HashMap<String, Integer>(); ArrayList<String> finalCheckinBid = new ArrayList<String>(); StringBuffer finalQueryCatCheck = new StringBuffer(); ArrayList<CheckinDetail> checkinList = new ArrayList<CheckinDetail>(); //System.out.println("I am in checkin box"); String[] arrayDays = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; for (int i = 0; i < arrayDays.length; i++) { if (fromCheckin == arrayDays[i]) { j = i; } else if (toCheckin == arrayDays[i]) { l = i; } } ArrayList<Integer> days = new ArrayList<Integer>(); days.add(j); int temfromday = j; days.add(l); // System.out.println("Input Data "+j+" "+fromCheckinHour+" "+toCheckin+" "+toCheckinHour+" "+ // operationCheckin+" "+valueCheckin); // System.out.println(j); int difference = CheckForDay(fromCheckin, toCheckin); if (difference > 0) { for (int k = 0; k < difference; k++) { j = j + 1; if (j == 7) { j = 0; } days.add(j); } } // for(int q:days){ // System.out.println(q); // } List<DBObject> categoryIdList = new ArrayList<DBObject>(); for (String t : finalCat) { BasicDBObject whereQueryBusiness = new BasicDBObject(); BasicDBObject fieldsBusiness = new BasicDBObject(); fieldsBusiness.put("business_id", 1); whereQueryBusiness.put("categories", t); DBCursor cursorForBusiness = collBusiness.find(whereQueryBusiness, fieldsBusiness); finalQueryCatCheck.append(whereQueryBusiness); while (cursorForBusiness.hasNext()) { int i = 1; categoryIdList.add(cursorForBusiness.next()); i++; } } //for FINALCAT List<DBObject> checkinCategoryIdList = new ArrayList<DBObject>(); for (DBObject s : categoryIdList) { //System.out.println(s.get("business_id")); BasicDBObject whereQueryCheckin = new BasicDBObject(); whereQueryCheckin.put("business_id", s.get("business_id")); DBCursor cursorForCheckin = collCheckin.find(whereQueryCheckin); while (cursorForCheckin.hasNext()) { int i = 1; checkinCategoryIdList.add(cursorForCheckin.next()); i++; } } //for DBObject s:categoryIdList for (DBObject u : checkinCategoryIdList) { // System.out.println(s.get("business_id")); // System.out.println(u.get("checkin_info").toString()); String full = u.get("checkin_info").toString(); String a = full.replaceAll("[{}]", ""); String[] b = a.split(","); for (int x = 0; x < b.length; x++) { CheckinDetail objCheckin = new CheckinDetail(); String[] c = b[x].split(":"); String d = c[0].replaceAll("[\"]", ""); String[] e = d.split("-"); objCheckin.b_Id = u.get("business_id").toString(); // System.out.println(u.get("business_id").toString()); // System.out.println(e[0]);//from time objCheckin.fromTime = Integer.parseInt(e[0].replaceAll("\\s+", "")); // System.out.println(e[1]);//day objCheckin.checkinDay = Integer.parseInt(e[1].replaceAll("\\s+", "")); // System.out.println(c[1]);//value objCheckin.CountValue = Integer.parseInt(c[1].replaceAll("\\s+", "")); ; checkinList.add(objCheckin); //System.out.println(checkinList.size()); } } for (CheckinDetail e : checkinList) { for (int f : days) { if ((f == temfromday && temfromday == e.checkinDay && Integer.parseInt(fromCheckinHour) <= e.fromTime) || (f == l && l == e.checkinDay && Integer.parseInt(toCheckinHour) >= e.fromTime) || (f == e.checkinDay && f != temfromday && f != l)) { // System.out.println(e.b_Id); // System.out.println(e.CountValue); if (tempCheckin.containsKey(e.b_Id)) { tempCheckin.put(e.b_Id, tempCheckin.get(e.b_Id) + e.CountValue); } else { tempCheckin.put(e.b_Id, e.CountValue); } } } } Iterator itr = tempCheckin.entrySet().iterator(); while (itr.hasNext()) { Map.Entry entry = (Map.Entry) itr.next(); if ((operationCheckin.contains("="))) { if (entry.getValue() == valueCheckin) { finalCheckinBid.add(entry.getKey().toString()); } } if ((operationCheckin.contains("<"))) { if (Integer.parseInt(entry.getValue().toString()) < Integer.parseInt(valueCheckin)) { finalCheckinBid.add(entry.getKey().toString()); //System.out.println("in <"); } } if ((operationCheckin.contains(">"))) { if (Integer.parseInt(entry.getValue().toString()) > Integer.parseInt(valueCheckin)) { finalCheckinBid.add(entry.getKey().toString()); //System.out.println("in >"); } } // } finalQueryCatCheck.append( "Stage{name='$match', value=Or Filter{filters=[Operator Filter{fieldName='checkin_info.2-3', operator='$exists', value=BsonBoolean{value=true}}, Operator Filter{fieldName='checkin_info.2-4', operator='$exists', value=BsonBoolean{value=true}}]}}\n" + "Document{{$group=Document{{_id=$business_id, total1=Document{{$sum=$checkin_info.2-4}}, total2=Document{{$sum=$checkin_info.2-3}}}}}}\n" + "Stage{name='$match', value=Operator Filter{fieldName='totalCheckins', operator='$gt', value=4}}"); if (!Address.isEmpty() && !proximity.isEmpty()) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; } if (Address .equalsIgnoreCase("6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } List<String> pointInterest = new ArrayList<String>(); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); DBCursor cursorForBusiness = collBusiness.find(query); finalQueryCatCheck.append(query); while (cursorForBusiness.hasNext()) { pointInterest.add(cursorForBusiness.next().get("business_id").toString()); } // System.out.println(pointInterest.size()); // System.out.println(reviewCategoryIdList.size()); finalCheckinBid.retainAll(pointInterest); // System.out.println(reviewCategoryIdList.size()); } resultTable.setModel(dtm); queryLabel.setText("<html><p>" + finalQueryCatCheck.toString() + "</p></html>"); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars" }; // add header in table model dtm.setColumnIdentifiers(header); List<DBObject> outputMyList = new ArrayList<DBObject>(); BasicDBObject whereQuery = new BasicDBObject(); for (String fianlBid2 : finalCheckinBid) { whereQuery.put("business_id", fianlBid2); DBCursor cursor = collBusiness.find(whereQuery); while (cursor.hasNext()) { int i = 1; //System.out.println(cursor.next()); outputMyList.add(cursor.next()); i++; } } for (DBObject temp : outputMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[5]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); dtm.addRow(row); } // } } //else with no review } //if for entire checkin check else {//only cat /////////////////////////////////////////Cat N Review///////////////////////////////////////////////////////////////////// if (!fromReview.isEmpty() && !toReview.isEmpty() && !operationStar.isEmpty() && !valueStar.isEmpty() && !operationVote.isEmpty() && !valueVote.isEmpty()) { StringBuffer finalQueryCatReview = new StringBuffer(); DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); String fromDate1 = fromReview; String fromdate = fromDate1 + "T00:00:00Z"; String toDate1 = toReview; String todate = toDate1 + "T00:00:00Z"; int starValue = Integer.parseInt(valueStar); //int voteValue = 4; int voteValue = Integer.parseInt(valueVote); DB dbReview = mongoClient.getDB("review"); DBCollection collReview = dbReview.getCollection("review"); //abhi tak ki bid is in finalCheckinBid // for(String a :finalCheckinBid){ // System.out.println(a); // } try { List<Object> finalCatBid = new ArrayList<Object>(); List<Object> reviewCategoryIdList = new ArrayList<Object>(); for (String a : finalCat) { BasicDBObject whereQueryBusinessReview = new BasicDBObject(); //System.out.println(a); whereQueryBusinessReview.put("categories", a); DBCursor cursor = collBusiness.find(whereQueryBusinessReview); finalQueryCatReview.append(whereQueryBusinessReview); while (cursor.hasNext()) { int i = 1; //System.out.println(cursor.next()); finalCatBid.add(cursor.next().get("business_id")); i++; } } DBObject match = new BasicDBObject("$match", new BasicDBObject("date", new BasicDBObject("$gt", format.parse(fromdate)) .append("$lt", format.parse(todate)))); DBObject groupFields = new BasicDBObject("_id", "$business_id"); groupFields.put("total1", new BasicDBObject("$sum", "$votes.funny")); groupFields.put("total2", new BasicDBObject("$sum", "$votes.useful")); groupFields.put("total3", new BasicDBObject("$sum", "$votes.cool")); groupFields.put("totalStars", new BasicDBObject("$sum", "$stars")); DBObject group = new BasicDBObject("$group", groupFields); DBObject fields = new BasicDBObject("_id", 1); BasicDBList addFields = new BasicDBList(); addFields.add("$total1"); addFields.add("$total2"); addFields.add("$total3"); fields.put("totalVotes", new BasicDBObject("$sum", addFields)); fields.put("totalStars", 1); DBObject project = new BasicDBObject("$project", fields); BasicDBObject votes = null; BasicDBObject stars = null; if (operationStar.equals(">")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$gt", starValue)); } if (operationStar.equals("<")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$lt", starValue)); } if (operationStar.equals("=")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$eq", starValue)); } if (operationVote.equals(">")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$gt", voteValue)); } if (operationVote.equals("<")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$lt", voteValue)); } if (operationVote.equals("=")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$eq", voteValue)); } List<BasicDBObject> list1 = new ArrayList<BasicDBObject>(); list1.add(new BasicDBObject(votes)); list1.add(new BasicDBObject(stars)); DBObject votesnStars = new BasicDBObject("$and", list1); DBObject match2 = new BasicDBObject("$match", votesnStars); AggregationOutput cursorForReview = collReview.aggregate(match, group, project, match2); String query33 = match + "\n" + group + "\n" + project + "\n" + match2; finalQueryCatReview.append(query33); Iterable<DBObject> list = cursorForReview.results(); Iterator<DBObject> resultSet1 = list.iterator(); while (resultSet1.hasNext()) { // System.out.println(resultSet1.next().get("_id")); reviewCategoryIdList.add(resultSet1.next().get("_id")); } //System.out.println(reviewCategoryIdList.size()); //System.out.println(finalCatBid.size()); reviewCategoryIdList.retainAll(finalCatBid); //System.out.println(reviewCategoryIdList.size()); // for (Object s : reviewCategoryIdList) { // System.out.println(s.toString()); // } if (!Address.isEmpty() && !proximity.isEmpty()) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; } if (Address.equalsIgnoreCase( "6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } List<String> pointInterest = new ArrayList<String>(); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); DBCursor cursorForBusiness = collBusiness.find(query); finalQueryCatReview.append(query); while (cursorForBusiness.hasNext()) { pointInterest.add(cursorForBusiness.next().get("business_id").toString()); } // System.out.println(pointInterest.size()); // System.out.println(reviewCategoryIdList.size()); reviewCategoryIdList.retainAll(pointInterest); // System.out.println(reviewCategoryIdList.size()); } queryLabel.setText("<html><p>" + finalQueryCatReview.toString() + "</p></html>"); resultTable.setModel(dtm); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars" }; // add header in table model dtm.setColumnIdentifiers(header); List<DBObject> outputMyList = new ArrayList<DBObject>(); for (Object fianlBid2 : reviewCategoryIdList) { BasicDBObject whereQuery = new BasicDBObject(); // System.out.println(fianlBid2); whereQuery.put("business_id", fianlBid2.toString()); DBCursor cursor = collBusiness.find(whereQuery); while (cursor.hasNext()) { //System.out.println(cursor.next()); outputMyList.add(cursor.next()); } } for (DBObject temp : outputMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[5]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); dtm.addRow(row); } } catch (Exception e) { } } //////////////////////////////////////Only Category //////////////////////////////////////////// else { resultTable.setModel(dtm); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars", "Category" }; // add header in table model dtm.setColumnIdentifiers(header); StringBuffer catOnly = new StringBuffer(); if (!Address.isEmpty() && !proximity.isEmpty() && finalCat.size() > 0) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; } if (Address .equalsIgnoreCase("6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } //BasicDBList category = new BasicDBList(); for (String a : finalCat) { BasicDBObject andQuery = new BasicDBObject(); List<BasicDBObject> obj = new ArrayList<BasicDBObject>(); List<DBObject> pointInterest = new ArrayList<DBObject>(); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); obj.add(query); obj.add(new BasicDBObject("categories", a)); andQuery.put("$and", obj); System.out.println(andQuery); DBCursor cursorForBusiness = collBusiness.find(andQuery); catOnly.append(andQuery); while (cursorForBusiness.hasNext()) { pointInterest.add(cursorForBusiness.next()); } for (DBObject temp : pointInterest) { Object[] row = new Object[6]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); row[5] = a; dtm.addRow(row); } } } else { List<DBObject> testMyList = new ArrayList<DBObject>(); for (String a : finalCat) { BasicDBObject whereQuery = new BasicDBObject(); //System.out.println(a); whereQuery.put("categories", a); DBCursor cursor = collBusiness.find(whereQuery); catOnly.append(whereQuery); while (cursor.hasNext()) { testMyList.add(cursor.next()); } for (DBObject temp : testMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[6]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); row[5] = a; dtm.addRow(row); } } } queryLabel.setText("<html><p>" + catOnly.toString() + "</p></html>"); } } //else } //cat and subCat is selected }
From source file:act.server.MongoDB.java
License:Open Source License
/** * Setup the ability to use MongoDB's aggregation framework. * This greatly greatly simplifies pulling out highly nested and unstructured data from the db. * * This method performs the query over the sequence database. * * References: https://docs.mongodb.com/manual/aggregation/ * @param pipeline A list of DBObjects that will be sequentially applied via aggregate. * @return An iterator over all the matching objects. *///from w w w .ja v a2s . c om public Iterator<DBObject> applyPipelineOverSequences(List<DBObject> pipeline) { AggregationOutput cursor = this.dbSeq.aggregate(pipeline); return cursor.results().iterator(); }
From source file:act.server.MongoDB.java
License:Open Source License
/** * Setup the ability to use MongoDB's aggregation framework. * This greatly greatly simplifies pulling out highly nested and unstructured data from the db. * * This method performs the query over the sequence reaction. * * References: https://docs.mongodb.com/manual/aggregation/ * @param pipeline A list of DBObjects that will be sequentially applied via aggregate. * @return An iterator over all the matching objects. */// w ww. j a v a2 s.c o m public Iterator<DBObject> applyPipelineOverReactions(List<DBObject> pipeline) { AggregationOutput cursor = this.dbReactions.aggregate(pipeline); return cursor.results().iterator(); }
From source file:com.azure.api.MongoDAO.java
public static LinkedList<Pojoo> MongoConnection() throws IOException { MongoClient mongo = new MongoClient("localhost", 27017); DB db = mongo.getDB("test"); DBCollection table = db.getCollection("DataFinal"); List<String> uniId = table.distinct("Asin"); //BasicDBObject searchQuery = new BasicDBObject(); //searchQuery.put("Asin", "000100039X"); DBObject groupFields = new BasicDBObject("_id", "$Asin"); groupFields.put("count", new BasicDBObject("$sum", 1)); //DBObject group = new BasicDBObject("$group", groupFields ); DBObject sortFields = new BasicDBObject("count", -1); //AggregationOutput output = table.aggregate(group, new BasicDBObject("$sort", sortFields )); //System.out.println(output.results());//Top reviews groupFields.put("average", new BasicDBObject("$avg", "$Ratings")); DBObject group2 = new BasicDBObject("$group", groupFields); AggregationOutput output2 = table.aggregate(group2, new BasicDBObject("$sort", sortFields)); Iterable<DBObject> iterable = output2.results(); //LinkedList<String>stringResult = new LinkedList<String>(); //LinkedList<String>stringrating = new LinkedList<String>(); //if(awsResult.size()!=0){awsResult.remove();} //if(stringResult.size()!=0){stringResult.remove();} //System.out.println("fffffffffffffffff"+stringResult.size()); int count = 0; LinkedList<Pojoo> uiList = new LinkedList<Pojoo>(); for (DBObject res : output2.results()) { //System.out.println("TTTTTTTT "+res.get("_id").toString()); //System.out.println("VVVVVVVV "+res.get("average").toString()); String awsResult = awsApi.getDetails(res.get("_id").toString()); //stringResult.add(res.get("_id").toString()); //stringrating.add(res.get("average").toString()); Pojoo polo = new Pojoo(); polo.setStringResult(awsResult); polo.setStringrating(res.get("average").toString()); uiList.add(polo);/*from www . jav a2 s . co m*/ count++; if (count == 8) { res = null; break; } } count = 0; //awsResult = awsApi.getDetails(stringResult); //for(String htp: awsResult){ //Pojoo polo = new Pojoo(); //polo.setStringResult(htp); //polo.setStringrating(res.get("average").toString()); //uiList.add(polo); //} // System.out.println("WWWWWW"+awsResult); //Pojoo img = new Pojoo(); //img.setStringrating(stringrating); //img.setStringResult(awsResult); //stringResult.remove(); //System.out.println("eeeeeeeeeeeeeee"+awsResult.size()); //for(String ret:awsResult) //{ // System.out.println(ret); //} return uiList; }
From source file:com.azure.api.MongoDAO.java
public static LinkedList<String> MongoConnection2() throws IOException { MongoClient mongo = new MongoClient("localhost", 27017); DB db = mongo.getDB("test"); DBCollection table = db.getCollection("DataFinal"); DBObject sortFields = new BasicDBObject("count", -1); DBObject groupGenreFields = new BasicDBObject("_id", "$Genre1"); groupGenreFields.put("count", new BasicDBObject("$sum", 1)); DBObject genregroup = new BasicDBObject("$group", groupGenreFields); AggregationOutput Genreoutput = table.aggregate(genregroup, new BasicDBObject("$sort", sortFields)); LinkedList<String> stringResult = new LinkedList<String>(); int count = 0; for (DBObject res : Genreoutput.results()) { stringResult.add(res.get("_id").toString()); System.out.println(res.get("_id").toString()); count++;//from w w w . j ava 2 s. c o m if (count == 8) break; } System.out.print("strinResult Size" + stringResult.size()); return stringResult; }
From source file:com.azure.api.MongoDAO.java
public static LinkedList<String> MongoConnection3() throws IOException { MongoClient mongo = new MongoClient("localhost", 27017); DB db = mongo.getDB("test"); DBCollection table = db.getCollection("DataFinal"); DBObject sortFields = new BasicDBObject("count", -1); DBObject groupGenreFields = new BasicDBObject("_id", "$Author"); groupGenreFields.put("count", new BasicDBObject("$sum", 1)); DBObject genregroup = new BasicDBObject("$group", groupGenreFields); AggregationOutput Genreoutput = table.aggregate(genregroup, new BasicDBObject("$sort", sortFields)); LinkedList<String> stringResult = new LinkedList<String>(); int count = 0; for (DBObject res : Genreoutput.results()) { stringResult.add(res.get("_id").toString()); System.out.println(res.get("_id").toString()); count++;/*w ww . j a va 2s . c om*/ if (count == 8) break; } System.out.print("strinResult Size" + stringResult.size()); return stringResult; }
From source file:com.bigdid.model.counters.java
public long getRevenueTotal() { List a = new ArrayList<String>(); // Now the $group operation DBObject groupFields = new BasicDBObject("_id", null); groupFields.put("revenue", new BasicDBObject("$sum", "$Order_Value")); DBObject group = new BasicDBObject("$group", groupFields); coll = db.getCollection("item_revenue"); // run aggregation List<DBObject> pipeline = Arrays.asList(group); long total = 0l; AggregationOutput output = coll.aggregate(pipeline); for (DBObject result : output.results()) { //System.out.println(result.get("_id")); total = Long.valueOf(result.get("revenue").toString()); }/*from ww w.j a v a2 s. c o m*/ return total; }
From source file:com.bigdid.model.Feedback_Location.java
public List getCity() throws SQLException, UnknownHostException { List a = new ArrayList<String>(); // Now the $group operation DBObject groupFields = new BasicDBObject("_id", "$Location"); groupFields.put("revenue", new BasicDBObject("$sum", "$Order_Value")); DBObject group = new BasicDBObject("$group", groupFields); // Finally the $sort operation DBObject sort = new BasicDBObject("$sort", new BasicDBObject("revenue", -1)); DBObject limit = new BasicDBObject("$limit", 10); // run aggregation List<DBObject> pipeline = Arrays.asList(group, sort, limit); AggregationOutput output = coll.aggregate(pipeline); for (DBObject result : output.results()) { //System.out.println(result.get("_id")); a.add(result.get("_id")); }/*from w ww . j a v a2 s .c o m*/ //numCity= l.size(); return a; }
From source file:com.bugull.mongo.BuguAggregation.java
License:Apache License
public Iterable<DBObject> results() throws AggregationException { int size = stages.size(); if (size <= 0) { throw new AggregationException("Empty stage in aggregation pipeline!"); }// w ww . j a v a2 s. co m AggregationOutput output = coll.aggregate(stages); CommandResult cr = output.getCommandResult(); if (!cr.ok()) { throw new AggregationException(cr.getErrorMessage()); } return output.results(); }
From source file:com.ebay.cloud.cms.dal.search.impl.SearchServiceImpl.java
License:Apache License
/** * Execute mongodb query /*from ww w . ja v a 2 s.co m*/ * */ private SearchResult executeMongoQuery(MongoQuery mongoQuery, SearchOption option, PersistenceContext context, ISearchQuery query) { MetaClass metadata = query.getMetadata(); SearchResult result = new SearchResult(metadata); if (option.isOnlyCount()) { long count = MongoExecutor.count(context, metadata, mongoQuery.match); result.setCount(count); result.setRawCount(count); } else if (mongoQuery.group == null) { List<DBObject> dbObjectList = null; dbObjectList = MongoExecutor.find(context, metadata, mongoQuery.match, mongoQuery.project, option); checkMemoryUsage(dbObjectList, context); buildResultObject(metadata, result, dbObjectList, context.getEntityFactory()); } else { AggregationOutput output = null; DBObject firstAggr = null; List<DBObject> aggrObjects = new ArrayList<DBObject>(); firstAggr = buildAggregationObjects(mongoQuery, option, aggrObjects); output = MongoExecutor.aggregate(context, metadata, firstAggr, aggrObjects.toArray(new DBObject[0])); List<DBObject> dbObjectList = new ArrayList<DBObject>(); for (DBObject entity : output.results()) { dbObjectList.add(entity); } checkMemoryUsage(dbObjectList, context); buildResultObject(metadata, result, output.results(), context.getEntityFactory()); } // count node should not have hasmore set if (option.isLookForward() && !option.isOnlyCount() && result.getRawCount() >= option.getLimit()) { result.setHasMore(true); List<IEntity> resultSet = result.getResultSet(); resultSet.remove(resultSet.size() - SearchOption.LOOK_FORWARD); } // set cursor entity List<IEntity> results = result.getResultSet(); if (!results.isEmpty()) { IEntity lastEntity = results.get(results.size() - 1); result.setCursorEntity(lastEntity); } return result; }