How to write complex mongodb query using QueryBuilder

Posted By : Md Qasim Siddiqui | 01-Jun-2015

This blog will describe how to write complex queries using Query Builder. I have build Custom Query Builder for search engine purpose.                                        So i will show step by step.

 

Step 1 

Create Service method with map as arguments having keyvalue pair for search engine parameters


public List searchUsers(Map map){
		return searchDao.searchUsers(map);
}

Step 2

 Create Dao method  

public List searchUsers(Map map){
		return searchDao.searchUsers(map);
}
 

Step 3 

public DBCollection getDBCollection(String collectionName){
		try {
			return datasource.mongo().getDB(datasource.getDatabaseName()).getCollection(collectionName);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			// throw exception
		}
	}

 

Step 4

public QueryBuilder mongoQueryBuilder(Map map){
		Iterator> it = map.entrySet().iterator();
		QueryBuilder queryBuilder = QueryBuilder.start();
		while(it.hasNext()){
			Entry keyValue = it.next();
			if(!isInteger(keyValue.getValue()))
				queryBuilder.and(keyValue.getKey().trim()).regex(Pattern.compile(keyValue.getValue().trim()+".*",Pattern.CASE_INSENSITIVE));
			else
				queryBuilder.and(keyValue.getKey().trim()).is(Integer.parseInt(keyValue.getValue()));
		}
		return queryBuilder;
	}

Step 5

public static boolean isInteger(String s) {
	    return isInteger(s,10);
	}

	public static boolean isInteger(String s, int radix) {
	    if(s.isEmpty()) return false;
	    for(int i = 0; i < s.length(); i++) {
	        if(i == 0 && s.charAt(i) == '-') {
	            if(s.length() == 1) return false;
	            else continue;
	        }
	        if(Character.digit(s.charAt(i),radix) < 0) return false;
	    }
	    return true;
	}

 

Step 6

create class datasource

@Configuration
public class Datasource extends AbstractMongoConfiguration{
	
	@Override
	public String getDatabaseName() {
		return "samepinch";
	}
 
	@Override
	@Bean
	public Mongo mongo() throws Exception {
		return new MongoClient("127.0.0.1");
	}

}

 

In Step 4 I have created QueryBuilder according to my need of search engine you can customized this mongo QueryBuilder method code to build query according to your requirment. Hope this blog may help you.

THANKS

About Author

Author Image
Md Qasim Siddiqui

Qasim is an experienced web app developer with expertise in groovy and grails,Hadoop , Hive, Mahout, AngularJS and Spring frameworks. He likes to listen music in idle time and plays counter strike.

Request for Proposal

Name is required

Comment is required

Sending message..
Yono Rummy YonoRummy Rummy Codes Rummy Promo Codes Rummy Yono App Yono Rummy APK Game Yono Rummy Yono Rummy Games sarkari naukri dunia TOTOSGP TOTO SGP TOTOSGP TOTO SGP TOTOSGP TOTOSGP India Games Online Platform Popular Games in India India Gaming Experience Online Games India Best Rummy Games in India India Games Collection Teen Patti Games India Rummy Games Online India India Rummy Gaming Platform Popular Rummy Platform India Online Rummy Games India India Mobile Gaming India Gaming Platform Indian Online Games India Games and Entertainment India Gaming Community India Online Gaming Platform Teen Patti Online Games India Rummy and Teen Patti Games