Powered By Blogger
Showing posts with label mongo. Show all posts
Showing posts with label mongo. Show all posts

Thursday, June 30, 2011

Mongo Java QueryBuilder Example

QueryBuilder helps construct complex queries to retrieve data from a collection in mongo db.

Following is an example of a QueryBuilder.

public List<Map<String, Object>> findList() { 
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        BasicDBObject document = new BasicDBObject();
        Calendar cal = Calendar.getInstance();
        Date now = cal.getTime();
        QueryBuilder qb = new QueryBuilder();
        qb.or(new QueryBuilder().put("starting_date").is(null).put("ending_date").is(null).get(),
                new QueryBuilder().put("starting_date").lessThanEquals(now).put("ending_date").greaterThanEquals(now).get());
        document.putAll(qb.get());
        document.put("status", "running");
        DBCursor cursor = getDbCollection().find(document).sort(new BasicDBObject("reported_time", 1));
        while(cursor.hasNext()) {
            list.add((Map<String, Object>) cursor.next().toMap().get("message"));
        }
        return list;
    }



  •  QueryBuilder qb = new QueryBuilder(), instantiates a new QueryBuilder.
  • The logic build by the QueryBuilder in the example above is;  (starting date = null and ending date = null) or (starting date >= now and ending date >= now) .  [qb.or(new QueryBuilder().put("starting_date").is(null).put("ending_date").is(null).get(),
                    new QueryBuilder().put("starting_date").lessThanEquals(now).put("ending_date").greaterThanEquals(now).get());]
  • document.putAll(qb.get()) adds the logic constructed to the DBObject.

thanks,
Shyarmal.