Java操作MongoDB模糊查询和分页查询
本文实例为大家分享了Java操作MongoDB模糊查询和分页查询,供大家参考,具体内容如下
模糊查询条件:
1、完全匹配
Patternpattern=Pattern.compile("^name$",Pattern.CASE_INSENSITIVE);
2、右匹配
Patternpattern=Pattern.compile("^.*name$",Pattern.CASE_INSENSITIVE);
3、左匹配
Patternpattern=Pattern.compile("^name.*$",Pattern.CASE_INSENSITIVE);
4、模糊匹配
Patternpattern=Pattern.compile("^.*name8.*$",Pattern.CASE_INSENSITIVE);
记录总数查询:
count(),返回查询总数。
查询记录排序:
BasicDBObjectsort=newBasicDBObject();
sort.put("name",1);
1、表示正序;-1.表示倒序
分页查询:
skip(),跳过多少条记录
limit(),返回多少条记录
代码实例:
packagecom.what21.mongodb.demo;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Set;
importjava.util.regex.Pattern;
importcom.mongodb.BasicDBObject;
importcom.mongodb.DB;
importcom.mongodb.DBCollection;
importcom.mongodb.DBCursor;
importcom.mongodb.DBObject;
importcom.mongodb.MongoClient;
importcom.mongodb.MongoClientOptions;
importcom.mongodb.MongoCredential;
importcom.mongodb.ServerAddress;
publicclassOperateDemo2{
/**
*@return
*@throwsException
*/
publicstaticMongoClientgetMongoClient()throwsException{
try{
//===================================================//
List<ServerAddress>serverList=newArrayList<ServerAddress>();
serverList.add(newServerAddress("192.168.18.85",27017));
//===================================================//
List<MongoCredential>mcList=newArrayList<MongoCredential>();
Stringusername="root";
Stringdatabase="demo";
char[]password="root123".toCharArray();
mcList.add(MongoCredential.createCredential(username,database,password));
//===================================================//
MongoClientOptions.Builderbuilder=MongoClientOptions.builder();
//与目标数据库能够建立的最大connection数量为50
builder.connectionsPerHost(50);
//如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
builder.threadsAllowedToBlockForConnectionMultiplier(50);
//一个线程访问数据库的时候,在成功获取到一个可用数据库连接之前的最长等待时间为2分钟
//这里比较危险,如果超过maxWaitTime都没有获取到这个连接的话,该线程就会抛出Exception
//故这里设置的maxWaitTime应该足够大,以免由于排队线程过多造成的数据库访问失败
builder.maxWaitTime(1000*60*2);
//与数据库建立连接的timeout设置为1分钟
builder.connectTimeout(1000*60*1);
//===================================================//
MongoClientOptionsmco=builder.build();
returnnewMongoClient(serverList,mcList,mco);
}catch(Exceptione){
throwe;
}
}
/**
*@paramdbname
*@return
*@throwsException
*/
publicstaticDBgetDB(Stringdbname)throwsException{
returngetMongoClient().getDB(dbname);
}
/**
*@paramdb
*/
publicstaticvoidcollections(DBdb){
Set<String>colls=db.getCollectionNames();
for(StringcollName:colls){
System.out.println(collName);
}
}
/**
*记录总数查询
*
*@paramdb
*@paramname
*/
publicstaticvoidcount(DBdb,Stringname){
DBCollectiondbColl=db.getCollection(name);
intcount=dbColl.find().count();
System.out.println("共有:"+count+"个");
}
/**
*模糊查询
*
*@paramdb
*@paramname
*/
publicstaticvoidquery(DBdb,Stringname){
DBCollectiondbColl=db.getCollection(name);
//完全匹配
//Patternpattern=Pattern.compile("^name$",Pattern.CASE_INSENSITIVE);
//右匹配
//Patternpattern=Pattern.compile("^.*name$",Pattern.CASE_INSENSITIVE);
//左匹配
//Patternpattern=Pattern.compile("^name.*$",Pattern.CASE_INSENSITIVE);
//模糊匹配
Patternpattern=Pattern.compile("^.*name8.*$",Pattern.CASE_INSENSITIVE);
BasicDBObjectquery=newBasicDBObject();
query.put("name",pattern);
BasicDBObjectsort=newBasicDBObject();
//1,表示正序;-1,表示倒序
sort.put("name",1);
DBCursorcur=dbColl.find(query).sort(sort);
intcount=0;
while(cur.hasNext()){
DBObjectobj=cur.next();
System.out.print("name="+obj.get("name"));
System.out.print(",email="+obj.get("email"));
System.out.println(",passwd="+obj.get("passwd"));
count++;
}
System.out.println("共有:"+count+"个");
}
/**
*分页查询
*
*@paramdb
*@paramname
*@paramstart
*@parampageSize
*/
publicstaticvoidpage(DBdb,Stringname,intstart,intpageSize){
DBCollectiondbColl=db.getCollection(name);
BasicDBObjectsort=newBasicDBObject();
sort.put("name",1);
DBCursorcur=dbColl.find().sort(sort).skip(start).limit(pageSize);;
intcount=0;
while(cur.hasNext()){
DBObjectobj=cur.next();
System.out.print("name="+obj.get("name"));
System.out.print(",email="+obj.get("email"));
System.out.println(",passwd="+obj.get("passwd"));
count++;
}
System.out.println("共有:"+count+"个");
}
/**
*@paramargs
*@throwsException
*/
publicstaticvoidmain(String[]args)throwsException{
DBdb=getDB("demo");
collections(db);
Stringname="users";
System.out.println("count()=================================================");
count(db,name);
System.out.println("query()=================================================");
query(db,name);
System.out.println("page()=================================================");
page(db,name,10,10);
}
}
以上就是Java操作MongoDB模糊查询和分页查询的实现代码,希望对大家的学习有所帮助。